6.6. HTTP 요청을 지정하는 방법
다음 예제에서는 Fuse Online Webhook에 대한 HTTP 요청을 지정하는 방법을 보여줍니다.
HTTP 본문만 포함하는 POST 요청의 Webhook 예
Webhook 연결로 시작된 통합을 고려한 다음 Fuse Online 제공 데이터베이스의 Todo 테이블에 행을 만듭니다.
이 통합을 생성하는 동안 Webhook 시작 연결을 추가할 때 이 콘텐츠가 있는 JSON 인스턴스로 출력 데이터 유형을 지정합니다. {"todo":"text"}
:
PostgresDB 연결을 완료 연결로 추가하면 Invoke SQL 작업을 선택하고 이 SQL 문을 지정합니다.
TODO (TASK) 값 (:#TASK)을 삽입합니다.
데이터베이스 연결을 추가한 후 매핑 단계를 추가합니다.
통합을 저장하고 게시합니다. 실행 중인 경우 Fuse Online에서 제공하는 외부 URL을 복사할 수 있습니다.
외부 URL의 일부를 이해하려면 다음 샘플 URL을 고려하십시오.
https://i-webhook-to-db-myproject.192.168.64.4.nip.io/webhook/bvGvQdpq308BcHIQQYeysFOK4plFISmghNHkRyOOk3YppitvOd
현재의 | 설명 |
---|---|
| Fuse Online에서는 항상 이 값을 URL 시작 부분에 삽입합니다. |
| 통합의 이름입니다. |
| 통합을 실행 중인 포드가 포함된 OpenShift 네임스페이스입니다. |
| OpenShift용으로 구성된 DNS 도메인입니다. Webhook를 제공하는 Fuse Online 환경이 표시됩니다. |
| 각 Webhook 연결 URL에 표시됩니다. |
| 통합에 Webhook 연결을 추가할 때 Fuse Online에서 제공하는 Webhook 연결 토큰입니다. 토큰은 URL을 식별하기가 어려워서 다른 사람이 요청을 보내지 못하도록 한다는 점에서 보안을 제공하는 임의의 문자열입니다. 요청에서는 Fuse Online에서 제공하는 토큰을 지정하거나 자체적으로 정의할 수 있습니다. 자신을 정의하는 경우 추측하기가 어려운지 확인하십시오. |
외부 URL에서 볼 수 있듯이 Fuse Online은 통합 이름, OpenShift 네임스페이스 이름 및 OpenShift DNS 도메인에서 호스트 이름을 구성합니다. Fuse Online에서는 불법 문자를 제거하고 공백을 하이픈으로 변환합니다. 샘플 외부 URL에서 호스트 이름입니다.
https://i-webhook-to-db-myproject.192.168.64.4.nip.io
curl
을 사용하여 Webhook를 호출하려면 다음과 같이 명령을 지정합니다.
curl -H 'Content-Type: application/json' -d '{"todo":"from webhook"}' https://i-webhook-to-db-myproject.192.168.64.4.nip.io/webhook/bvGvQdpq308BcHIQQYeysFOK4plFISmghNHkRyOOk3YppitvOd
-
H
옵션은 HTTPContent-Type
헤더를 지정합니다. -
d
옵션은 기본적으로 HTTP 메서드를POST
로 설정합니다.
이 명령을 실행하면 통합을 트리거합니다. 데이터베이스 완료 연결은 새 작업을 tasks 테이블에 삽입합니다. 이를 보려면 https://todo-myproject.192.168.64.4.nip.io
에서 업데이트를 클릭하면 Webhook에서
새 작업으로 표시되는 Todo 앱을 표시합니다.
쿼리 매개변수를 사용한 POST 요청의 예
이 예제에서는 이전 예와 동일한 통합을 고려하십시오.
그러나 이 예제에서는 이 콘텐츠로 JSON 스키마를 지정하여 Webhook 연결 출력 데이터 유형을 정의합니다.
{ "type": "object", "definitions": {}, "$schema": "http://json-schema.org/draft-07/schema#", "id": "io:syndesis:webhook", "properties": { "parameters": { "type": "object", "properties": { "source": { "type": "string" }, "status": { "type": "string" } } }, "body": { "type": "object", "properties": { "company": { "type": "string" }, "email": { "type": "string" }, "phone": { "type": "string" } } } } }
이 JSON 스키마에서 다음을 수행합니다.
-
id
는io.syndesis.webhook
로 설정해야 합니다. -
parameters
섹션에서는 HTTP 쿼리 매개변수를 지정해야 합니다. -
본문
섹션은 본문 내용을 지정해야 하며 필요한 만큼 복잡할 수 있습니다. 예를 들어 중첩 속성 및 배열을 정의할 수 있습니다.For example, it can define nested properties as well as arrays.
그러면 Webhook 커넥터가 통합의 다음 단계를 위해 콘텐츠를 준비하는 데 필요한 정보가 제공됩니다.
curl
을 사용하여 HTTP 요청을 보내려면 다음과 같은 명령을 호출합니다.
curl -h 'Content-Type: application/json' -d '{"company":"Gadgets","email":" ","phone":"+1-202-555-0152"}'https://i-webhook-params-to-db-myproject.192.168.42.235.nip.io/webhook/ZYWrhaW7dVk097vNsLX3YJ1GyxUFMFRteLpw0z4O69MW7d2Kjg?source=web&status=newmailto:sales@gadgets.com
Webhook 연결이 이 요청을 수신하면 다음과 같은 JSON 인스턴스가 생성됩니다.
{ "parameters": { "source": "web", "status": "new" }, "body": { "company": "Gadgets", "email": "sales@gadgets.com", "phone": "+1-202-555-0152" } }
이 내부 JSON 인스턴스는 다음 매핑을 활성화합니다.
GET이 있는 Webhook 예
입력 데이터를 제공하지 않는 GET
요청과의 통합을 트리거하려면 '{}'
정의를 사용하여 Webhook 연결 출력 데이터 모양을 JSON 인스턴스로 지정합니다. 그런 다음 쿼리 매개변수를 지정하지 않는 다음 curl
명령을 호출할 수 있습니다.
curl 'https://i-webhook-params-to-db-myproject.192.168.42.235.nip.io/webhook/ZYWrhaW7dVk097vNsLX3YJ1GyxUFMFRteLpw0z4O69MW7d2Kjg'
이전 POST
예제를 변경하여 쿼리 매개변수로 GET
요청을 보낼 수 있지만 본문은 전송할 수 없습니다. 다음과 같이 Webhook 연결 출력 데이터 모양을 정의를 사용하여 JSON 스키마로 지정합니다.
{ "type": "object", "definitions": {}, "$schema": "http://json-schema.org/draft-07/schema#", "id": "io:syndesis:webhook", "properties": { "parameters": { "type": "object", "properties": { "source": { "type": "string" }, "status": { "type": "string" } } } } }
GET
요청을 보내는 curl
명령은 다음과 같습니다.
curl 'https://i-webhook-params-to-db-myproject.192.168.42.235.nip.io/webhook/ZYWrhaW7dVk097vNsLX3YJ1GyxUFMFRteLpw0z4O69MW7d2Kjg?source=web&status=new'`