在 feathersjs 应用程序中在哪里实现 webhook 路由?

Where to implement webhook routes in a feathersjs app?

假设 Feathers 应用具有以下目录结构:

- src
-- hooks
-- middleware
-- services

放置 webhook 路由处理程序的合适位置在哪里?这应该使用中间件来完成,还是使用标准 Express 路由并将它们放在路由目录中更符合习惯?

关于上下文,我想收听来自 Instagram 的事件,它们不一定与我正在使用的 RESTful 服务相匹配。

中间件只是标准快速路由的处理程序。我认为 webhook 是像任何其他非服务端点一样的中间件。

在该中间件中,您可以通过 req.app.service 检索服务。例如,在 images 服务中为 webhook 检索的数据创建条目然后发送状态(或返回错误)的 Instagram webhook 可以如下所示:

app.use('/instagram', function(req, res) {
  const imageService = req.app.service('images');
  const images = req.body.data;

  imageService.create(currentData).then(() => {
    res.status(200);
    res.end('ok');
  }).catch(error => {
    res.status(500);
    res.end(error.message);
  });
});

发送到 webhook 的数据在添加到数据库之前也应该通过 Instagram 验证。