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イベントを投げれるのはなかなか衝撃的でした。サービス関連系は、データのフローを双方向にしすぎると無限ループが起きうるなどのリスクもあります。ただし連携することで、より効率的な開発や運用が期待できそうです。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark