Supabase的Webhooks|Webhooks in Supabase

閱讀時間約 7 分鐘
Supabase的Webhooks|Webhooks in Supabase封面圖

Supabase的Webhooks|Webhooks in Supabase封面圖

前面文章有說明過訂閱資料庫的更新事件,讓前端畫面能夠收到更新資訊即時反應在用戶面前,那接下來要介紹SupabaseWebhooks則是能讓其他server端收到資料庫事件的通知。

嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supabase的進階功能應用。

Webhooks是什麼?

這裡簡單說明一下Webhooks,一般來說是由前端主動呼叫後端API,取回資料,Webhooks則是由後端伺服器觸發某件事情後主動去呼叫另一個後端伺服器或是客戶端伺服器。

如果是對於Webhooks還想要深入研究的話可以自行先google一下概念,接下來就直接進入正題。

Webhooks in Supabase

事前準備工作

在新增Webhook之前,需要準備一個用來接收Webhook資料的URL位置,我這裡就用ngrok直接在本機開啟一個對外的URL,用來接收由Webhook發出的資料。

開啟Webhooks功能

每個Supabase的專案預設都有Webhooks這個功能,預設是關閉的,所以直接先去把這項功能開啟。

webhook的目錄位置

webhook的目錄位置

Database目錄進去以後選Webhooks頁籤,即可開啟Webhooks的頁面。

啟用webhook的面板

啟用webhook的面板

首先會先看到尚未啟用的狀態,直接把webhooks啟用起來。

新增Webhook

新增webhook的面板

新增webhook的面板

啟用成功後會出現這個面板,直接點擊新增一個Webhook。

新增webhook資訊的面板

新增webhook資訊的面板

這個面板是新增Webhooks的頁面,主要的內容依序說明。

  • Name:這個Webhooks的名字,名字自己看所以就取一個可以辨識的名字。
  • Table:這個地方和實時更新的時候有點相似,需要選擇觸發這個Webhook的表格和事件,這裡以展示方便就選擇Update更新事件。

supabase的實時更新 | Subscribe to channel

webhook資訊面板下半部分

webhook資訊面板下半部分

  • Type of webhook:選擇這個Webhook的類型,這裡就直接選HTTP Request
  • URL:填寫要觸發的伺服器URL位置,這裡就填入準備好的對外URL。

到這裡基本的設定就完成了,可以點擊右下角Create webhook的按鈕新增Webhook。

另外在安全上的考量可以在最下面HTTP Patameters的地方新增自己用來辨識的內容,以確保伺服器端收到的Webhook通知是受信任的來源。
新增完成後在webhook就可以看到內容

新增完成後在webhook就可以看到內容

新增完成以後就在目錄的地方看到剛剛新增的內容,如果要修改的話可以點擊右邊三個點的按鈕進去修改。

接收webhook通知

目標設定

這次和前幾次有些不同,需要寫伺服器端的程式來處理接收SupabaseWebhook資料。

當伺服器端收到webhook通知後,我設定了一個Telegram機器人,將資料庫變動即時通知給我,讓我能馬上知道資料庫的變化情況。

撰寫Controller

撰寫伺服器的部分不在這次的主軸所以就用簡單說明的方式。

我在本地端開啟一個express的伺服器,寫一個POST的API端口接收webhook的通知。

以下是我的Controller基本內容。

const webhooksHandler = async (req, res) => {
console.log(req.body)

res.status(204).send('')
}

export {
webhooksHandler
}

先撰寫基本內容以後去Supabase的資料庫測試一下是否能夠正確接收到Webhook的資料。

回去後台介面直接對表格todos手動變更裡面的資料,等待幾秒後就看到本地接收到一個webhook通知,裡面的資料如下。

{
type: 'UPDATE',
table: 'todos',
record: {
id: 9,
task: '更新時間asd',
likes: 0,
user_id: '9fe1408a-b5d8-4fd8-92aa-0c631e514c29',
updated_at: '2023-10-03T09:41:54.718275+00:00',
inserted_at: '2023-09-08T03:36:11.697173+00:00',
is_complete: false
},
schema: 'public',
old_record: {
id: 9,
task: '更新時間asd',
likes: 0,
user_id: '9fe1408a-b5d8-4fd8-92aa-0c631e514c29',
updated_at: '2023-10-03T09:41:19.463512+00:00',
inserted_at: '2023-09-08T03:36:11.697173+00:00',
is_complete: true
}
}

可以看到Webhook通知的資料是滿完整的,把變更前後的資料格式都有附上可供比對。

能成功接收到webhook後就沒啥大問題了,把剩下機器人的部分撰寫完成吧!

import bot from '../bot.js'

const webhooksHandler = async (req, res) => {
const {
type,
record: {
id,
is_complete
}
} = req.body

const USER_ID = process.env.USER_ID

await bot.sendMessage(USER_ID, `事件名稱: ${type}, ID: ${id}, 是否完成: ${is_complete}`)

res.status(204).send('')
}

export {
webhooksHandler
}

回去後台再手動更改表格內的資料以觸發webhook,就可以在telegram機器人上收到通知。

成功收到的telegram機器人通知

成功收到的telegram機器人通知

總結

Supabase本身內建了Webhook功能,這使得專案可以應用在更多不同的場景中。

官方也提供了一支影片,介紹如何使用Webhook功能以及如何與Stripe整合,非常實用。


在未來,專案的規模逐漸擴大的情況下,Webhook可以成為提升專案功能的一個關鍵工具。

有興趣的內容

avatar-img
6會員
23內容數
沙龍新手
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
技術叢林 的其他內容
本篇文章又要介紹Supabase好用的實時更新功能,叫做Presence。Presence是 Supabase 提供的一項實時更新功能,讓開發者能夠輕鬆實現用戶之間的實 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supa
Supabase是使用PostgreSQL作為資料庫,所以當然也具有Storage的功能,能夠儲存用戶的圖片或是檔案,一樣可以設定讀取權限相當方便,一起瞭解如何操作。 從後台的大頁籤就可以進去Storage頁面,頁面和資料庫表格有點類似,如果有新增任何buckets就會顯示在All buckets的
本篇文章主要介紹Supabase裡的Trigger的功能,詳細說明什麼是Trigger和使用時機,以及如何在後台瀏覽和設定Trigger,此外,文章中會提供一個常用的Trigger功能範例。 善用觸發器(Trigger)的話,能夠幫助開發者減少重複執行的工作,提高資料庫效能和安全性,可以說是一個強大
這篇要介紹的是Supabase裡的Functions,我不知道有沒有官方的中文譯名,我都直接稱呼為函式或程式。Functions就是和任何程式語言裡面所認識的函式一樣,只差在這個Functions是在PostgreSQL裡面執行,沒有聽錯是在資料庫裡面執行的函式,文章會介紹新增的方式和做一個範例。
在前面的文章中已經在supabase中完成了基本的操作,甚至已經完成訂閱即時更新的功能,接著本篇文章要介紹的是如何在supabase裡設定與使用外來鍵,包含如何在客戶端撰寫查詢外鍵的SQL,馬上開始。如果還沒有閱讀實時更新功能文章的話可以點擊這裡去閱讀。 嗨歡迎閱讀我的文章!這是關於Supabase
在網頁裡直接監聽資料庫的變化吧! 這個聽起來需要複雜工程的事情,在supabase的幫助之下就可以解決,串接好後只要資料庫中的資料發生變化,supabase會自動把最新資料發送到前端頁面,可以讓使用者即時收到最新資訊,省去重複刷新頁面,提供使用者體驗。 在supabase中的實時更新總共有3種事件
本篇文章又要介紹Supabase好用的實時更新功能,叫做Presence。Presence是 Supabase 提供的一項實時更新功能,讓開發者能夠輕鬆實現用戶之間的實 嗨歡迎閱讀我的文章!這是關於Supabase的系列文章,內容包含介紹Supabase是什麼、基本功能應用,深入了解Supa
Supabase是使用PostgreSQL作為資料庫,所以當然也具有Storage的功能,能夠儲存用戶的圖片或是檔案,一樣可以設定讀取權限相當方便,一起瞭解如何操作。 從後台的大頁籤就可以進去Storage頁面,頁面和資料庫表格有點類似,如果有新增任何buckets就會顯示在All buckets的
本篇文章主要介紹Supabase裡的Trigger的功能,詳細說明什麼是Trigger和使用時機,以及如何在後台瀏覽和設定Trigger,此外,文章中會提供一個常用的Trigger功能範例。 善用觸發器(Trigger)的話,能夠幫助開發者減少重複執行的工作,提高資料庫效能和安全性,可以說是一個強大
這篇要介紹的是Supabase裡的Functions,我不知道有沒有官方的中文譯名,我都直接稱呼為函式或程式。Functions就是和任何程式語言裡面所認識的函式一樣,只差在這個Functions是在PostgreSQL裡面執行,沒有聽錯是在資料庫裡面執行的函式,文章會介紹新增的方式和做一個範例。
在前面的文章中已經在supabase中完成了基本的操作,甚至已經完成訂閱即時更新的功能,接著本篇文章要介紹的是如何在supabase裡設定與使用外來鍵,包含如何在客戶端撰寫查詢外鍵的SQL,馬上開始。如果還沒有閱讀實時更新功能文章的話可以點擊這裡去閱讀。 嗨歡迎閱讀我的文章!這是關於Supabase
在網頁裡直接監聽資料庫的變化吧! 這個聽起來需要複雜工程的事情,在supabase的幫助之下就可以解決,串接好後只要資料庫中的資料發生變化,supabase會自動把最新資料發送到前端頁面,可以讓使用者即時收到最新資訊,省去重複刷新頁面,提供使用者體驗。 在supabase中的實時更新總共有3種事件
你可能也想看
Google News 追蹤
在上一篇part 1的文章中簡單的介紹了什麼是Solana Actions & Blinks後,這篇我來詳細一點介紹一下Solana Actions以開發者的角度來看是怎麼樣子的。
Thumbnail
※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
雖然 Heptabase 目前還沒有行事曆相關功能,但這裡我想針對日前開放的 Task 功能,來探討現階段可以做到什麼程度的任務管理。
Thumbnail
透過 Webhook 與 No Code 自動化工具,在 SurveyCake 問卷填答後,自動寄個人化信件。全程無需寫程式,即可自動帶入問卷特定填答內容,還可與 Google Sheets 結合,帶入不重複專屬序號至信件中,讓行銷應用更完整!幫助你節省人工成本,提高資料準確性、通知即時性和工作效率
Thumbnail
Webhook 提供一個「即時觸發」的資料傳送方式。Webhook 與 API 的差異及在自動化流程中的作用是什麼?它讓你在事件發生時獲得通知。透過生活化的情境舉例,理解 Webhook 的運作原理,並了解如何透過 No Code 自動化工具設定 Webhook,實現自動化整合,提升工作效率!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
Websocket是一種網路傳輸的協定,讓建立一次handshake的過程就可以相互傳遞資料,而非同步的過程能夠讓處理事情更有效率,這篇文章將帶你深入瞭解Websocket如何運作、以及其特點與優勢。
Thumbnail
本篇說明如何利用Kubernetes特色,將PostgreSQL DB以HA的架構來提供服務,並說明相關的實作流程與說明。
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
在上一篇part 1的文章中簡單的介紹了什麼是Solana Actions & Blinks後,這篇我來詳細一點介紹一下Solana Actions以開發者的角度來看是怎麼樣子的。
Thumbnail
※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
雖然 Heptabase 目前還沒有行事曆相關功能,但這裡我想針對日前開放的 Task 功能,來探討現階段可以做到什麼程度的任務管理。
Thumbnail
透過 Webhook 與 No Code 自動化工具,在 SurveyCake 問卷填答後,自動寄個人化信件。全程無需寫程式,即可自動帶入問卷特定填答內容,還可與 Google Sheets 結合,帶入不重複專屬序號至信件中,讓行銷應用更完整!幫助你節省人工成本,提高資料準確性、通知即時性和工作效率
Thumbnail
Webhook 提供一個「即時觸發」的資料傳送方式。Webhook 與 API 的差異及在自動化流程中的作用是什麼?它讓你在事件發生時獲得通知。透過生活化的情境舉例,理解 Webhook 的運作原理,並了解如何透過 No Code 自動化工具設定 Webhook,實現自動化整合,提升工作效率!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
Websocket是一種網路傳輸的協定,讓建立一次handshake的過程就可以相互傳遞資料,而非同步的過程能夠讓處理事情更有效率,這篇文章將帶你深入瞭解Websocket如何運作、以及其特點與優勢。
Thumbnail
本篇說明如何利用Kubernetes特色,將PostgreSQL DB以HA的架構來提供服務,並說明相關的實作流程與說明。
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為