Supabase

SupabaseのDatabase Webhookを試してみた

SupabaseのWebhook機能について試してみた結果を報告しています。WebhookはAPIリクエストをDB操作と連動して外部に送ることができます。デフォルトではINSERTに対してイベントが発火し、指定したURLにJSON形式のデータが送信されます。開発時はngrokなどを使用してローカル環境にProxyを設定する必要があります。Webhookを活用することで、サービス開発とデータ連携を効率化することができますが、双方向の連携には注意が必要です。

広告ここから
広告ここまで

Supabaseでは、DBへの操作と連動して外部にAPIリクエストを送れるWebhook機能があると聞きましたので、試してみました。

プロジェクトのWebhook機能を有効化する

まずダッシュボードでWebhookを有効化しておきましょう。[Enable webhooks]ボタンをクリックするだけでOKです。

[Create a new hookw]ボタンが出ていれば、利用可能です。

Webhookを SQLで登録する

PostgreSQLの機能でもあるためか、SQLから登録できます。APIはLocalhostを指定してもイベントが届きません。そのため、開発時はngrokなどでローカルにProxyする準備をしておきましょう。

create trigger "my_webhook" after insert
on "public"."my_table" for each row
execute function "supabase_functions"."http_request"(
  'https://xxxxxxx.ngrok-free.app',
  'POST',
  '{"Content-Type":"application/json"}',
  '{}',
  '1000'
);

[Success]がSQL Editorに表示されたら成功です。

ダッシュボードのWebhookセクションにも表示されました。

Webhookを実行してみる

デフォルトではINSERTに対してイベントが発火します。ですので次のようなINSERTのSQLを実行してみましょう。

insert into books
  (title, author, description)
values
  (
    'book name',
    'author',
    'Description'
  );

APIのログを見ると、次のようなBodyを持つイベントが届きました。

{
  type: 'INSERT',
  table: 'books',
  record: {
    id: 8,
    title: 'Book name',
    author: 'Author name',
    description: 'description'
  },
  schema: 'public',
  old_record: null
}

Webhookを使いこなして、サービス開発とデータ連携を効率化しよう

WordPressくらいでしかRDBMSを扱ったことがなかったため、DBからWebhookイベントを投げれるのはなかなか衝撃的でした。サービス関連系は、データのフローを双方向にしすぎると無限ループが起きうるなどのリスクもあります。ただし連携することで、より効率的な開発や運用が期待できそうです。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts