真的很难让这个工作。我在 Contentful 中有一个 webhook 定义设置。当我在 Contentful 中发布一个条目时,它会向 webhooks.example.com 发送一个 HTTP POST 请求。
在那个子域中,我运行了一个 NodeJS 服务器来接受请求。我查看了Contentful API docs,其中说请求正文应该包含新发布的条目。
我尝试了 2 种接收请求的方法,但都没有给我任何请求正文。首先我尝试了contentful-webhook-server NPM 模块:
var webhooks = require("contentful-webhook-server")({
path: "/",
username: "xxxxxx",
password: "xxxxxx"
});
webhooks.on("ContentManagement.Entry.publish", function(req){
console.log("An entry was published");
console.log(req.body);
});
webhooks.listen(3025, function(){
console.log("Contentful webhook server running on port " + 3025);
});
这里请求通过,我收到消息An entry was published
,但req.body
未定义。如果我这样做console.log(req)
,我可以看到完整的请求对象,其中不包括正文。
所以我然后尝试运行一个基本的 Express 服务器来接受所有 POST 请求:
var express = require("express"),
bodyParser = require("body-parser"),
methodOverride = require("method-override");
var app = express();
app.use(bodyParser.json({limit: "50mb"}));
app.use(bodyParser.urlencoded({extended:true}));
app.use(methodOverride("X-HTTP-Method-Override"));
app.post("/", function(req, res){
console.log("Incoming request");
console.log(req.body);
});
同样,我收到Incoming request
消息但req.body
为空。我知道这种方法是错误的,因为我没有使用我的 webhook 用户名/密码。
如何正确接收传入的 webhook 请求并获取正文内容?