Coo*_*oop 9 javascript webhooks node.js express contentful
真的很难让这个工作.我在Contentful中设置了webhook定义.当我在Contentful中发布条目时,它会向webhooks.example.com发送HTTP POST请求.
在该子域我运行NodeJS服务器以接受请求.我查看了Contentful API文档,它说请求正文应该包含新发布的条目.
我已经尝试了两种接收请求的方法,这两种方法都没有给我任何请求体.首先,我尝试了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);
});
Run Code Online (Sandbox Code Playgroud)
这里请求来了,我得到了消息,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);
});
Run Code Online (Sandbox Code Playgroud)
再说一遍,我得到的Incoming request
消息req.body
却是空的.我知道这种方法是错误的,因为我没有使用我的webhook用户名/密码.
如何正确接收传入的webhook请求并获取正文内容?
Jer*_*NER 12
在contentful-webhook-server
不解析REQ,这样可以解释为什么它不会在回调提供身体给你.
您的服务器似乎是正确的,但似乎内容有一个type-is
库不能识别的自定义json类型.
内容类型看起来像'application/vnd.contentful.management.v1 + json'
如果您body-parser
接受此自定义内容类型,您的服务器可能会工作.例如 :
app.use(bodyParser.json({type: 'application/*'}));
Run Code Online (Sandbox Code Playgroud)
如果这样可行,您可以对接受的类型更具体.
作为记录 :
typeis.is('application/vnd.contentful.management.v1+json', ['json'])
=> false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1628 次 |
最近记录: |