References
- https://swagger.io/docs/specification/callbacks/ (OpenAPI 3.0 Callbacks 개념)
- Callback 이란
- call-after 함수 라고 함.
- 함수가 끝나고 난 뒤에 실행되는 함수
- 다른 함수의 인자로써 이용되는 함수.
- 어떤 이벤트에 의해 호출 되어지는 함수.
- 실행은 즉각적으로 실행되는 동기 식 콜백과, 나중에 발생하는 비동기 식 콜백으로 나뉜다.
- Webhook 이란
- 웹훅은 웹페이지 또는 웹 앱에서 발생하는 특정 이벤트 들을 커스텀 Callback 으로 변환해 주는 방법
- 일반적인 API는 클라이언트가 서버를 호출하는 방식이다, 하지만 웹 훅의 경우 서버에서 특정 이벤트가 발생 햇을 때 클라이언트를 호출하는 방식이며 역방향 API 라고도 부른다.
- 여기서 Callback URL 은 서버 측 특정 이벤트가 발생 했을 때 클라이언트의 어느 URL로 데이터를 보낼지 정해 놓은 주소라고 생각하면 된다.
- Developer Portal 에서 웹훅
- 특정 Event Type 에 따른 URL(API) 호출 설정 (Gateway)

- 웹훅과 폴링의 차이

- Polling : 주기적 호출 -> Event 확인
- Webhook : Event 발생 시 Client 에 알림
- webMethods API Gateway ( APIs with Callback (Webhooks (?) ))

- API Gateway를 거치지 않는 Callback 방식
- Enabler에서 바로 Client로 호출 한다

- API Gateway를 거치는 호출 방식
- API Gateway Callback Processor 에서 전달받은 callbackUrl 을 래핑한다, 래핑하여 Enabler로 전달
- Enabler 에서 Gateway 주소로 래핑 된 Callback URL을 호출 (Gateway를 거치는 호출 방식)

cf) OAuth2.0 에서의 Callback URL 은 Redirection 되기 때문에 Redirect URL 와 혼용 되어 명칭.
- API Callback Processor Settings (webMethods API Gateway)
- Administration > General 탭에서 설정 가능

- Process all API callback requests : 모든 콜백 요청 처리, 클라이언트에서 오는 모든 API 콜백 요청을 수락하고 이 요청을 기본 API로 라우팅 전에 자체 URL로 래핑 ( 체크가 없을 시 콜백 URL로 래핑 X), 해당 설정은 Gateway를 거친 콜백인지 아닌지를 결정하는 설정 (위 그림 참고)
- Allow HTTPS access only : 콜백 요청 시 https 요청만 수신, callbackUrl 을 HTTPS 로 래핑
- Process Only Allowed IPs requests & Trusted IP Addresses : 허용된 IPs 만 콜백 요청 처리
- 표현 식 참고

- API Gateway API 생성 설정
- API 생성 (CALLBACK_TEST_01)

- Query Test Resource Path 설정

- Body Test Resource Path 설정

- Header Test Resource Path 설정

- 생성 시 문제점
- API 생성 후 바로 Response Path 설정 시 Callback 이 생성이 안되는 오류 ( 제품 버그 인 듯 (Fix 7) ) -> 저장 후 Edit 하면 생성 가능
- Knowledge Portal 에서 설정한 Resource Path 는 앞 슬래쉬 (/) 설정이 되어 있지만 그렇게 설정할 경우 callbackURL 이 호출이 안되는 문제가 있다 (500 Error) -> 뒷 슬래쉬 설정에는 정상 호출
- API Enabler (Integration Server) 내부 서비스 설정
- srvc, srvc_1 서비스 (Query, Body 확인)

- srvc_2 서비스 (Header 확인)

- Input / Output 세팅은 동일

- 호출 결과 ( Gateway 의 API Calllback Processor 에 의한 url 래핑 결과 확인, 추가적인 callback 호출은 하지 않음)
- Query 테스트

- Body 테스트

- Header 테스트
