机制 :
我正在向我的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的经验很少,所以请让我知道问题出在哪里。
除非您在路由/中间件链中较早的地方有一个(自定义)中间件,否则它会执行以下操作:
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
,application/x-www-form-urlencoded
或multipart/form-data
。您request()
似乎没有设置任何这些设置,这确实是正确的,因为它只是自由格式的数据,但这意味着没有中间件正在读取请求数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句