Cargo-Planner Docs

양방향 통신

자주 사용되는 패턴은 입력 데이터를 우리의 API에 보내고, 우리가 계산을 수행한 후 결과를 제공받아 애플리케이션에 임베드하는 것입니다.

때때로 컨테이너에서 일부 화물을 삭제하거나 다른 화물을 추가하는 등의 수동 재배치를 원할 수 있습니다. 이러한 수정 작업을 수행한 후에는 애플리케이션이 해당 변경 사항을 받는 것이 좋습니다. Cargo-Planner가 시스템과 상호 작용하기를 원할 것입니다. 이때 웹훅을 추가하고 싶을 것입니다.

웹훅

웹훅은 특정 이벤트에 구독하기 위해 설정하는 엔드포인트입니다.

예를 들어, 로드플랜이 저장되거나 업데이트되자마자 이 결과를 서버로 보내고 싶다고 가정해 봅시다. 이를 달성하는 방법은 다음과 같습니다:

웹훅 생성

  1. 웹 애플리케이션의 개발자 포털로 이동합니다
  2. 웹훅 섹션을 확장합니다
  3. 웹훅 생성 버튼을 누릅니다
  4. 데이터를 게시할 URL을 입력하고 구독할 이벤트를 선택합니다
  5. 저장 버튼을 누릅니다

이벤트 수신

서버에서 엔드포인트를 추가합니다. 이는 웹훅 생성 시 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에서 실제로 데이터를 수신했는지 확인하기 위해 서버에서 사용할 수 있는 비밀을 받게 됩니다.