sha*_*sol 4 post node.js express
我需要获取node/express应用程序中特定端点的原始发布数据.我做:
app.use('/paypal/ipn',function(req, res, next) {
var postData='';
req.on('data', function(chunk) {
postData += chunk;
});
req.on('end', function() {
req.rawBody = postData;
console.log('ended buffering. result: ' + req.rawBody);
next();
});
});
Run Code Online (Sandbox Code Playgroud)
会发生什么是我在控制台中获得console.log输出,然后没有任何反应.大约一分钟后,我看到服务器返回200 - 可能是超时.这就像next()命令永远不会执行,或执行和stales.
当我注释掉所有内容时,只需调用next():
app.use('/paypal/ipn',function(req, res, next) {
/*
var postData='';
req.on('data', function(chunk) {
postData += chunk;
});
req.on('end', function() {
req.rawBody = postData;
console.log('ended buffering. result: ' + req.rawBody);
next();
});
*/
next();
});
Run Code Online (Sandbox Code Playgroud)
一切正常,即调用端点(当然请求不包含rawBody).
所以我似乎在缓冲rawBody的方式做错了什么?导致next()不起作用的东西?
调用next()而不等待'end',以防止bodyParser和你的代码干扰.
app.use(function(req, res, next) {
req.rawBody = '';
req.on('data', function(chunk) {
req.rawBody += chunk;
});
next();
});
app.use(express.bodyParser());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4163 次 |
| 最近记录: |