我是nodejs的新手,现在我正在学习http模块。
我为node写了一个js程序来检查请求中的content-type是否是application/json,那么它应该在'readable'事件时控制台。
发生的是:在一个单一的请求'可读'事件调用两次,并打印值第一次和第二次返回空。
代码如下:
var connect = require('connect');
function jsonParse(req, res, next) {
if (req.headers['content-type'] == 'application/json' && req.method == 'POST') {
var readData = '';
req.on('readable', function() {
console.log('inside readable ' + req.read());
readData += req.read();
});
req.on('end', function() {
try {
req.body = JSON.parse(readData);
} catch (e) {
}
next();
})
} else {
next();
}
}
connect()
.use(jsonParse)
.use(function(req, res) {
if (req.body) {
res.end('JSON parsed !' + req.body);
} else {
res.end('no json detected !');
}
}).listen(3000);
我把它叫做:
输出为:inside readable {“foo”:“asdf”} inside readable null
请指导我如何处理这件事。先谢谢你了。
1条答案
按热度按时间gopyfrb31#
您应该只在数据可用时从请求中读取,因此当
req.read()
不返回null
时。您可以使用while
循环来检查这一点。替换:
有: