为什么我在 Calendly 将数据发布到我的端点时收到 POST 404

Why I am getting POST 404 when Calendly is posting data to my endpoint

我按照他们的 instructions 创建了 Calendly Webhook 订阅。我的后端是用 NodeJS + Express 编写的。我在试用期间尝试实施 Calendly webhook。我在 localhost:8080 上公开了端点 /webhooks/calendly/calendlyWebhook 并且我通过 ngrok 来完成它,因为 Calendly 仅支持 https 协议。我在我的日志中看到 Calendly 向端点发送 post 请求,但我看到它是 404:POST /webhooks/calendly/calendlyWebhook 404.

这是我的 webhook 文件 calendlyWebhook.js

const { Router } = require('express');

const calendlyWebhookRouter = Router();

calendlyWebhookRouter.post('/calendlyWebhook', async (req, res) => {
  console.log("Hello from calendly webhook ✅")
  return res.statusCode(200).send('Ok')
})

module.exports = {
  calendlyWebhookRouter,
};

这是我的 index.js 文件,我在其中初始化路由器

...
...

const {calendlyWebhookRouter} = require('./webhooks/calendlyWebhook');
app.use('/webhooks/calendly/calendlyWebhook', calendlyWebhookRouter);

...

我到底做错了什么?

webhook 路由包含 calendlyWebhook 两次(一次在 app.use 路径中,一次在 calendlyWebhookRouter 路径中)。因此,只有当 POST 请求发送到 /webhooks/calendly/calendlyWebhook/calendlyWebhook 时才会调用 calendlyWebhookRouter

从 app.use 路由路径中删除 calendlyWebhook 应该可以解决问题:

app.use('/webhooks/calendly', calendlyWebhookRouter);