結論
・Web API:要求してデータを取得するための手段
・Webhook:特定のイベントが発生したときに通知を受け取る
詳細
広義の意味では、WebhookもWeb APIの定義である「HTTP通信を主としたアプリケーション・プログラミング・インターフェイス」である。
Web APIとWebhookの違いは「通信の手順とデータが流れる方向」である。
Web API の通信は、下記 2 ステップで成り立ちます。
- クライアントがサーバにデータを要求する(リクエスト)
- サーバがクライアントにデータを送る(レスポンス)
※原則として、リクエストが先・レスポンスが後
Webhook の通信は、下記1 ステップのみで成り立ちます。
- 送信元サーバが送信先サーバにデータを送信する(リクエスト)
Web API の場合はサーバからクライアントへのレスポンスでデータが返信されているのに対して、Webhook の場合はリクエストでいきなりデータを送信している。
使用例
Web APIの使用例:
・Twitter API:開発者がTwitterのデータにアクセスし、操作するためのWeb APIの一例。
開発者はTwitter APIを使用して、ツイートの検索、ユーザーのタイムラインの取得、新しいツイートの投稿などを行うことが可能。
https://developer.twitter.com/ja/docs/twitter-api
・Google Maps API:地図や地理的な情報にアクセスするためのAPI。
開発者はGoogle Maps APIを使用して、カスタム地図の表示、経路の検索、場所の詳細情報の取得などを実現可能。
https://developers.google.com/maps/documentation/javascript?hl=ja
・GitHub REST API:GitHubのリポジトリやユーザーに関する情報にアクセスするためのAPI。
開発者はGitHub REST APIを使用して、リポジトリの作成、コミットの取得、プルリクエストの作成などを行える。
https://docs.github.com/ja/rest?apiVersion=2022-11-28
Webhookの使用例:
・GitHub Webhook:GitHubのWebhookを使用すると、特定のリポジトリに新しいコミットがプッシュされたときに通知を受け取ることが可能。
これにより、コードが変更されるたびにビルドやデプロイの自動化などが可能。
https://docs.github.com/ja/webhooks/about-webhooks
・Stripe Webhook:Stripeは、オンライン支払い処理を行うためのサービスで、Webhookを使用してイベント通知を提供。
例えば、支払いが成功したときや失敗したときにWebhookがトリガーされ、開発者はこれを利用して注文の処理やユーザーへの通知を行うことが可能。
https://stripe.com/docs/webhooks?locale=ja-JP
・Slack Incoming Webhooks:SlackのIncoming Webhooksを使用すると、外部のシステムやサービスがSlackにメッセージを投稿可能。
イベントが発生した場合に通知をSlackに送り、チーム全体で共有することができる。
https://api.slack.com/messaging/webhooks
参考情報
https://qiita.com/kuwazzy/items/fdf363cc1caee9a23686
https://jp.quora.com/webhook%E3%81%A8API%E3%81%AE%E9%81%95%E3%81%84%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B