About

Webhookとは?イベントが起きたら相手にHTTPで知らせる仕組み

「逆方向API」— コールバックURLを登録して待つ

Webhookは「逆方向API」とも呼ばれます。従来のAPIではクライアントがサーバーにリクエストしますが、Webhookではサーバーがイベント発生時にクライアントのエンドポイントに直接データを送信します。

構造ダイアグラム

事前登録段階
🖥️
自分のサーバー
コールバックURL提供
① URL登録 →
☁️
外部サービス
例: GitHub, Stripe
イベント発生時
🖥️
自分のサーバー
POST受信 + 処理
← ② HTTP POSTコールバック
⚡
イベント発生!
決済完了、コードプッシュなど
フロー説明
  1. 自分のサーバーのコールバックURLを外部サービスに事前登録
  2. 外部サービスでイベント発生時に登録済みURLへHTTP POST
  3. 自分のサーバーが受信してイベント処理
  4. ポーリングなしでリアルタイム通知受信可能

動作フロー

1

自サーバーのコールバックURLを外部サービスに登録

2

外部サービスでイベント発生(決済完了、コードプッシュなど)

3

外部サービスが登録されたURLにHTTP POSTリクエストを送信

4

自サーバーがリクエストを受信してイベントを処理

メリット

  • ✓ リアルタイムイベント受信
  • ✓ ポーリング不要(効率的)
  • ✓ 実装が比較的シンプル
  • ✓ 疎結合

デメリット

  • ✗ 公開URLが必要
  • ✗ 失敗時のリトライロジックが必要
  • ✗ 順序保証が困難
  • ✗ セキュリティ検証が必要(署名確認)

ユースケース

GitHub Webhook(コードプッシュ通知) Stripe決済通知 Slackイベント購読 CI/CDパイプラインのトリガー
← GraphQL Subscriptionとは?欲しいデータだけ購読する Pub/Subとは?メッセージキューとの違い →