什麼是 Webhook?

在編寫整合不同服務的程式碼時,使用 Webhook 是很常見的。 什麼是 Webhook? Webhook 是一個 POST 請求處理器,它會等待有人呼叫它,在有人呼叫時進行某些工作。 讓我舉個例子。我使用 Paddle 來銷售我的 Bootcamp,每當有人註冊時,我的 Webhook 會被呼叫並傳遞一些 JSON 資料。 這些資料包括客戶的電子郵件、客戶姓名和已購買的產品。 然後,Webhook 負責將客戶添加到 Airtable 底稿中,並向客戶發送歡迎郵件和一些資訊。 在我這個特定的案例中,Webhook 是使用 Express 所建構的 Node.js 應用程式,但它可以是任何能夠接受網路請求且可從互聯網訪問的東西。我將它放在了一個 VPS 上,但也可以是一個無伺服器函數。 支付平台提供 Webhook 是很常見的 - 它們處理付款,然後讓你執行你可能需要執行的「事情」。 Webhook 的另一個使用案例是在你想要時在一台機器上執行任務。例如,所有部署平台都提供 Webhook,你可以呼叫該 Webhook 來觸發新的部署。 我在 Netlify 或 Cloudflare Pages 使用它。我在 IFTTT 上設定了一個任務,每天早上 8 點觸發部署程序,所以我前一天安排的文章現在被發佈了,因為它的發佈日期已經過去了。 這對於我的一貫性非常重要,因為我知道每天早上 8 點我的靜態網站的文章都會被發佈。我不再需要手動執行此動作。 許多無代碼工具允許你使用它們來創建自動化。它們是非常酷的。 如果你思考一下,Webhook 就是讓互聯網保持連接的黏合劑。它們確實讓我能運行我的業務,所以我對它們的存在感到感激。

在Express中如何獲取解析後的body和原始body

了解如何在Express中使用body-parser獲取解析後的body和原始body。 在我正在構建的某個應用程序中,我遇到了這個問題。 使用Express,我可以導入body-parser來將body解析為JSON: import bodyParser from 'body-parser' app.use(bodyParser.json()) 然而,為了與Stripe支付API集成,我需要將原始body(未解析)暴露給一個端點,但我無法找出如何在解析body為JSON的同時實現這一點。 下面的代碼可以解決這個問題: app.use(bodyParser.json({ verify: (req, res, buf) => { req.rawBody = buf } })) 現在可以通過req.rawBody獲取原始body,並且通過req.body獲取JSON解析後的數據。 從body-parser的GitHub上我發現,這將使每次請求的RAM使用量翻倍,但由於我需要這個功能,我別無選擇。 除非為我想處理的Stripe webhook創建一個不同的伺服器。