Cargo-Planner Docs

İki yönlü iletişim

Sık kullanılan bir model, bazı giriş verilerini API’mıza göndermeniz, biz sayısal hesaplamaları yaparız ve ardından uygulamanıza yerleştirebileceğiniz bir sonuç sunulur.

Bazen bir konteynerden bazı yükleri silmek ve bazılarını eklemek isteyebileceğiniz manuel düzenlemeler yapmak istersiniz. Bu tür değişiklikler yaptığınızda, uygulamanızın da bu değişiklikleri alması harika olurdu - Cargo-Planner’ın sisteminizle etkileşimde bulunmasını istersiniz. O zaman bazı web kancaları eklemek isteyeceksiniz.

Web Kancaları

Web kancaları, belirli olaylara abone olmak için ayarladığınız uç noktalardır.

Diyelim ki bir yük planı sizin tarafınızdan kaydedildiğinde/güncellendiğinde, bu sonucun sunucunuza gönderilmesini istiyorsunuz. Bunu şu şekilde başarabilirsiniz:

Bir web kancası oluşturma

  1. Web uygulamasındaki Geliştirici portalına gidin
  2. Web kancaları bölümünü genişletin
  3. Web kancası oluştur düğmesine basın
  4. Verilerin gönderileceği URL’yi girin ve abone olmak istediğiniz olayı seçin
  5. Kaydet düğmesine basın

Olayları Dinleme

Sunucunuzda, yukarıdaki URL bölümünde uç noktayı oluştururken belirttiğinizle aynı uç noktayı ekleyin


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"  # Uç noktanız için oluşturulan gizli anahtarı ekleyin

    expected_signature = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()

    if hmac.compare_digest(f'sha256={expected_signature}', received_signature):
        # Yükü işleyin
        return "Payload processed", 200
    else:
        abort(403, 'Signature verification failed')

if __name__ == '__main__':
    app.run()

Bir web kancası oluşturduğunuzda, verilerin gerçekten Cargo-Planner’dan geldiğinden emin olmak için sunucunuzda kullanabileceğiniz bir gizli anahtar alacaksınız.