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可以成為提升專案功能的一個關鍵工具。

有興趣的內容

6會員
23內容數
沙龍新手
留言0
查看全部
發表第一個留言支持創作者!
技術叢林 的其他內容
本篇文章又要介紹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 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
在專案管理中,瞭解時間相關的英語單字和表達方式至關重要。許多專案經理過於專注於截止日期,但還有許多其他術語和概念可以幫助確保專案如期完成。這篇文章分享了包括時間表、時間框架、里程碑等常用術語及其使用情境,並提出有效時間管理及風險管理的概念。這些知識能幫助團隊更好地控制專案進度與提升效率。
Thumbnail
「山接納了你。」人們不只一次感恩,聽聞你用毫無準備的身體直上海拔 4130。在星空寂靜下,你頭腦清明,凝視稜線。好奇人們為何而來,為何攀登,為何死去。「它們沒有接納我,它們是接納了我的基因。」身體在山裡,但心智不在。 你知道自己始終看不見山的立體面,感受不到那些召喚。
Thumbnail
Deep Week,全球最大的自由潛水活動、自潛人的夏令營,聚集了一群熱愛自由潛水的世界公民。足跡遍布世界各地,每年都會到不同的國家巡迴,從澳洲、印尼巴厘島,到菲律賓、泰國普吉島,再到希臘、墨西哥。在自由潛水的圈子裡,偶像也可以是朋友,大家彼此激勵、互相學習,一起進步。
Thumbnail
新聞摘要:袴田巖為世界上服刑時間最長的死囚,日本法院發現調查人員偽造針對他的證據,因此被無罪釋放。
Thumbnail
前面文章有說明過訂閱資料庫的更新事件,讓前端畫面能夠收到更新資訊即時反應在用戶面前,那接下來要介紹Supabase的Webhooks則是能讓其他server端收到資料庫事件的通知。 這裡簡單說明一下Webhooks,一般來說是由前端主動呼叫後端API,取回資料,Webhooks則是由後端伺服器觸發某
Thumbnail
您是否尋找列用AI提升寫作效率的有效策略? 在當今AI時代,我們可能都對如何提升寫作效率感到困擾。你是否曾想過,AI工具或許可以提供絕佳的解決方案?在這篇文章中,我們將透過三個重要面向來探討:利用AI寫作工具、維持人類獨特性,以及實踐提升寫作效率的方法。 在寫作過程中,我們可以透過
Thumbnail
身心平衡是每個超過30歲的人必須要維護的。 透過閱讀與寫作的平衡,你可以鍛鍊你的心靈,練習更好的消化與吸收知識。 在這裡,我將分享我如何利用閱讀與寫作這兩種方式鍛鍊心靈的三大關鍵。 關鍵1 - 讀寫的平衡:就如同飲食與運動的平衡,閱讀讓我們吸收知識,而寫作則如同運動,將所學知識消化與吸收。如果只有吸
十七年,足夠這個世界及一個國際大都會作很多轉變⋯⋯
Thumbnail
工作中,你能決定哪些部分呢? 如果一個人在工作沒什麼自由度,沒有決策權,那麼很快就會職業枯竭,有能力做但沒興趣。 我從事的學術產業,就非常需要熱情,來避免職業枯竭。下面是我掌握工作自由度,抵抗職業枯竭的3個實踐策略: 策略1 - 善用自己的決策權,打破工作中的枯燥:你必須完成老闆交代的事情,但是「完
Thumbnail
台股量縮震盪,守在5日線上,走勢仍是攻擊型態! 櫃買留下墓碑線,但上影線是多方進攻的痕跡,加上實質走勢是日出走勢,多方將持續進攻! 陸股持續拉回,近期的觀盤重點,下檔支撐不能跌破!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
在專案管理中,瞭解時間相關的英語單字和表達方式至關重要。許多專案經理過於專注於截止日期,但還有許多其他術語和概念可以幫助確保專案如期完成。這篇文章分享了包括時間表、時間框架、里程碑等常用術語及其使用情境,並提出有效時間管理及風險管理的概念。這些知識能幫助團隊更好地控制專案進度與提升效率。
Thumbnail
「山接納了你。」人們不只一次感恩,聽聞你用毫無準備的身體直上海拔 4130。在星空寂靜下,你頭腦清明,凝視稜線。好奇人們為何而來,為何攀登,為何死去。「它們沒有接納我,它們是接納了我的基因。」身體在山裡,但心智不在。 你知道自己始終看不見山的立體面,感受不到那些召喚。
Thumbnail
Deep Week,全球最大的自由潛水活動、自潛人的夏令營,聚集了一群熱愛自由潛水的世界公民。足跡遍布世界各地,每年都會到不同的國家巡迴,從澳洲、印尼巴厘島,到菲律賓、泰國普吉島,再到希臘、墨西哥。在自由潛水的圈子裡,偶像也可以是朋友,大家彼此激勵、互相學習,一起進步。
Thumbnail
新聞摘要:袴田巖為世界上服刑時間最長的死囚,日本法院發現調查人員偽造針對他的證據,因此被無罪釋放。
Thumbnail
前面文章有說明過訂閱資料庫的更新事件,讓前端畫面能夠收到更新資訊即時反應在用戶面前,那接下來要介紹Supabase的Webhooks則是能讓其他server端收到資料庫事件的通知。 這裡簡單說明一下Webhooks,一般來說是由前端主動呼叫後端API,取回資料,Webhooks則是由後端伺服器觸發某
Thumbnail
您是否尋找列用AI提升寫作效率的有效策略? 在當今AI時代,我們可能都對如何提升寫作效率感到困擾。你是否曾想過,AI工具或許可以提供絕佳的解決方案?在這篇文章中,我們將透過三個重要面向來探討:利用AI寫作工具、維持人類獨特性,以及實踐提升寫作效率的方法。 在寫作過程中,我們可以透過
Thumbnail
身心平衡是每個超過30歲的人必須要維護的。 透過閱讀與寫作的平衡,你可以鍛鍊你的心靈,練習更好的消化與吸收知識。 在這裡,我將分享我如何利用閱讀與寫作這兩種方式鍛鍊心靈的三大關鍵。 關鍵1 - 讀寫的平衡:就如同飲食與運動的平衡,閱讀讓我們吸收知識,而寫作則如同運動,將所學知識消化與吸收。如果只有吸
十七年,足夠這個世界及一個國際大都會作很多轉變⋯⋯
Thumbnail
工作中,你能決定哪些部分呢? 如果一個人在工作沒什麼自由度,沒有決策權,那麼很快就會職業枯竭,有能力做但沒興趣。 我從事的學術產業,就非常需要熱情,來避免職業枯竭。下面是我掌握工作自由度,抵抗職業枯竭的3個實踐策略: 策略1 - 善用自己的決策權,打破工作中的枯燥:你必須完成老闆交代的事情,但是「完
Thumbnail
台股量縮震盪,守在5日線上,走勢仍是攻擊型態! 櫃買留下墓碑線,但上影線是多方進攻的痕跡,加上實質走勢是日出走勢,多方將持續進攻! 陸股持續拉回,近期的觀盤重點,下檔支撐不能跌破!