Cargo-Planner Docs
양방향 통신
자주 사용되는 패턴은 입력 데이터를 우리의 API에 보내고, 우리가 계산을 수행한 후 결과를 제공받아 애플리케이션에 임베드하는 것입니다.
때때로 컨테이너에서 일부 화물을 삭제하거나 다른 화물을 추가하는 등의 수동 재배치를 원할 수 있습니다. 이러한 수정 작업을 수행한 후에는 애플리케이션이 해당 변경 사항을 받는 것이 좋습니다. Cargo-Planner가 시스템과 상호 작용하기를 원할 것입니다. 이때 웹훅을 추가하고 싶을 것입니다.
웹훅
웹훅은 특정 이벤트에 구독하기 위해 설정하는 엔드포인트입니다.
예를 들어, 로드플랜이 저장되거나 업데이트되자마자 이 결과를 서버로 보내고 싶다고 가정해 봅시다. 이를 달성하는 방법은 다음과 같습니다:

- 웹 애플리케이션의 개발자 포털로 이동합니다
- 웹훅 섹션을 확장합니다
- 웹훅 생성 버튼을 누릅니다
- 데이터를 게시할 URL을 입력하고 구독할 이벤트를 선택합니다
- 저장 버튼을 누릅니다
이벤트 수신
서버에서 엔드포인트를 추가합니다. 이는 웹훅 생성 시 URL 섹션에 지정한 것과 동일합니다
from flask import Flask, request, abort
import hmac
import hashlib
app = Flask(__name__)
@app.route('/events-from-cargoplanner/', methods=['POST'])
def receive_webhook():
payload = request.get_data(as_text=True)
received_signature = request.headers.get('X-Hub-Signature')
secret = "_nf7TmrgTJt6Gk43d9aSAK_yOEE58KXlTgvotei3Xe4" # 엔드포인트에 대해 생성된 비밀을 추가합니다
expected_signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
# 페이로드 처리
return "Payload processed", 200
else:
abort(403, 'Signature verification failed')
if __name__ == '__main__':
app.run()
웹훅을 생성할 때 Cargo-Planner에서 실제로 데이터를 수신했는지 확인하기 위해 서버에서 사용할 수 있는 비밀을 받게 됩니다.