机制:
我正在向我的API发送此POST请求:
request.post('http://localhost:9876/api/alerts',{body: "test"}, function (err, res, body) {
if (err) {
self.emit('log','ERROR : API error - '+err);
}
self.emit('log','RESPONSE - '+res.statusCode);
});
在服务器端,我有:
app.post('/api/alerts',function(req,res){
console.log(req);
res.status(200).send('OK');
});
进行通信并返回200状态。但在服务器端,我看不到我的请求的遗体。
完整的' req'日志可在此处获取:https://gist.github.com/xShirase/0f9de0048e5cfa40a98c,最相关的部分是:
body: {},
我想知道它是否来自我用来保护其余路由的Passport中间件,或者我是否只是破坏了客户端请求......
我在客户端尝试了很多不同的请求格式,没有任何效果,而且我对Passport的经验很少,所以请告诉我问题的来源。
答案 0 :(得分:1)
除非您在路由/中间件链中早些时候有(自定义)中间件,否则会执行以下操作:
app.use(function(req, res, next) {
var buffer = '';
req.setEncoding('utf8');
req.on('data', function(d) {
buffer += d;
}).on('end', function() {
req.body = buffer;
next();
});
});
那么您可能不应该期望填充req.body
,因为常见的主体解析模块期望Content-Type
,application/json
或{{1}中的一个application/x-www-form-urlencoded
}}。您的multipart/form-data
似乎没有设置任何这些,这实际上是正确的,因为它只是自由格式数据,但这意味着没有中间件正在读取请求数据。