順序どおりに届かないWebhookイベントを処理する

イベントの発生情報とファイルのバージョン番号を使って古いWebhook処理を拒否し、順序を示す項目がない場合は現在の状態を照合します。

最終確認日

スクリーンショットは英語版の画面です。

Webhookの到着順は状態の順序を保証しません。再試行の遅延や手動再配信により、古いペイロードが新しいイベントの後に届くことがあります。配信行の作成時刻は元の業務上の変更ではなく試行を記録します。

イベントの発生情報を比較し、古いファイルバージョンを拒否し、バージョンのない削除を照合して、最新の受け入れ済み状態を確定する4つのパネル。
イベントの発生情報を比較し、古いファイルバージョンを拒否し、バージョンのない削除を照合して、最新の受け入れ済み状態を確定する4つのパネル。スクリーンショットを原寸大で開く。

手順

  1. 署名を検証し、最上位のイベントidで重複を排除して、type、created、workspace_id、dataを解析します。イベントIDは意味を持たない値であり、並べ替えに使用しないでください。
  2. 最上位のcreatedはイベントのUnix秒による発生時刻として保存し、全体の順序を示す番号として扱わないでください。別のイベントが同じ秒に発生する場合があり、再配信では古いペイロードが保持され、新しい配信行が作られます。
  3. file.uploadedではdata.file_idをキーに状態を保存し、整数のdata.versionを比較します。大きいバージョンを適用し、同じイベントIDは重複として扱い、新しいものの後に届いた小さいバージョンは無視してください。
  4. share.accessedではアクセスの発生にdata.accessed_atを使用し、異なるイベントIDをすべて保持してください。1つのリンクへの2回の閲覧は、時刻が近くても別々のイベントです。
  5. file.deletedの現在のペイロードにはfile_id、name、permanentがありますが、対象のバージョンはありません。元に戻せない後続の削除を実行する前に、別途認可されたAPI読み取りでdosyaの現在の状態を照合してください。
  6. 古いアップロードイベントを遅延させ、先に大きいファイルバージョンを処理してから古いリクエストを解放してテストします。保存済みバージョンが後退せず、両方の試行に意図した応答が返ることを確認してください。

送信側はイベント間やエンドポイント間の順序を保証しません。信頼できる項目がある場合は対象ごとに後退しない状態を保持し、ない場合は現在の状態を照合してください。

順序どおりに届かないWebhookイベントの処理に関する参考画面。Get API KeyとView SDKsのリンクを示すdosya REST API概要。
順序どおりに届かないWebhookイベントの処理に関する参考画面。Get API KeyとView SDKsのリンクを示すdosya REST API概要。スクリーンショットを原寸大で開く。

期待される結果

受信側は確認済みの最新ファイルバージョンに収束し、異なる共有アクセスを保持して、ランダムなIDや配信時刻から削除順序を推測しません。遅れて届いた再試行によって後続の状態が後退することはありません。

2つのイベントが同じcreated値を持っています。 対象固有の項目を使うか現在の状態を照合してください。エンベロープのタイムスタンプの精度は1秒です。

削除を照合できません。 元に戻せない状態変更を推測せず、そのイベントを隔離して担当者に確認を依頼し、受信側の再試行ポリシーに従って応答してください。

関連ガイド

この記事は役に立ちましたか?

評価の結果を読み込んでいます…

投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。

質問と回答

このガイドの手順について質問できます。質問は確認後に公開されます。

公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。

質問を読み込んでいます…

    dosyaアカウントにサインインすると、質問を投稿できます。

    やり直す前に結果を確認

    操作をもう一度確認する必要があるときは、次の共通の確認事項をご利用ください。