ホームページ > バックエンド開発 > Golang > Go で Webhook ペイロード配信サービスを構築する

Go で Webhook ペイロード配信サービスを構築する

Linda Hamilton
リリース: 2025-01-20 18:20:13
オリジナル
837 人が閲覧しました

この記事では、Go を使用して Webhook プロキシを作成し、GitHub Webhook をリッスンするアプリケーションのローカル開発を可能にする方法について詳しく説明します。 このソリューションでは、カスタム サーバーと CLI アプリケーションを構築することで、smee.io や ngrok などのサードパーティ サービスの使用を回避します。

Building a Webhook payload delivery service in Go

課題は、Webhook イベントを GitHub からローカルホスト開発環境に転送することにあります。 このチュートリアルでは、GitHub イベントを受信するサーバーと、それらをローカル アプリケーションに転送する CLI の 2 つの部分からなるソリューションを紹介します。

アーキテクチャ:

システムには 4 つの主要なコンポーネントが含まれます:

  1. GitHub: Webhook イベントのソース。
  2. Go Server: GitHub からイベントを受信し、CLI に転送します。
  3. Go CLI: ローカルで実行し、サーバー イベントをサブスクライブし、ローカル アプリケーションに転送します。
  4. ローカル アプリケーション: ダミー サーバー (テスト用) が、転送されたリクエストを受信します。

Building a Webhook payload delivery service in Go

CLI とサーバー間の通信には、シンプルな一方向プッシュ技術である Server-Sent Events (SSE) が使用されます。

実装:

プロジェクト構造には、CLI およびサーバー実行可能ファイル用の cmd ディレクトリと、共有パッケージ用の internal ディレクトリが含まれています。 サーバーは、SSE 機能に go-sse ライブラリを利用します。 CLI は、堅牢な接続処理のために backoff ライブラリを使用します。

*サーバー (cmd/web/main.go および external/server/):**

サーバーには 2 つのエンドポイントがあります:

  • /channel/{channel} (GET): CLI との SSE 接続を確立します。
  • /channel/{channel} (POST): GitHub Webhook イベントを受信し、エンコードして、接続されている CLI に公開します。

CLI (cmd/cli/main.go):

CLI はサーバーへの SSE 接続を確立し、エンコードされたリクエストを受信して​​デコードし、指定されたローカル アプリケーションに転送します。 エラー処理と指数バックオフは、backoff ライブラリを使用して実装されます。

テスト:

転送された Webhook イベントを受信して​​処理するために、単純なテスト サーバー (cmd/test/main.go) が提供されます。 サーバーをデプロイして CLI を実行した後、GitHub リポジトリに変更をプッシュすると Webhook がトリガーされ、ローカル テスト サーバーに転送されます。

Building a Webhook payload delivery service in Go

Building a Webhook payload delivery service in Go

展開 (付録):

この記事では、Docker とデプロイメント ツールの Kamal を使用したサーバーのデプロイメントについて詳しく説明します。 Dockerfile の作成、Kamal のセットアップ、環境変数の構成 (セキュリティのためのパスワード マネージャーの使用を含む)、ヘルス チェック エンドポイントの追加について説明します。 このプロセスには、DigitalOcean ドロップレットのセットアップ、SSH アクセスの構成、Kamal のプロキシ経由で Let's Encrypt を使用したドメイン名と SSL 証明書の管理が含まれます。 追加のセキュリティ対策と開発環境の改善も提案されます。

この堅牢なソリューションは、ローカル開発中に GitHub Webhook を処理するための柔軟で信頼性の高い方法を提供し、外部サービスの必要性を排除します。 今後の記事では、これを拡張して Telegram ボットを作成する方法を検討します。

以上がGo で Webhook ペイロード配信サービスを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート