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에서 실제로 데이터를 보내는지 확인하기 위해 서버에서 사용할 수 있는 비밀키를 받게 됩니다.