我正在处理这样的POST请求:
app.post('/somepage', function (req, res) {
var post_data = req.body;
});
此处,req.body
已经是一个JavaScript对象(我已尝试console.log(req.body)
并在服务器的控制台中获得了[object Object]
。我想获得与HTTP请求一起发送的原始POST数据字符串。这可能吗?
注意:我使用这个中间件:
app.use(express.json());
app.use(express.urlencoded());
答案 0 :(得分:1)
这是一个可行的解决方案:
// ...
app.use(function(req, res, next) {
var buffer = '';
req.on('data', function(data) {
buffer += data.toString();
}).on('end', function() {
req.bodyraw = buffer;
});
next();
});
app.use(express.json());
app.use(express.urlencoded());
// ...
app.post('/somepage', function (req, res) {
var rawpost = req.bodyraw;
});
它应该是安全的,因为json和urlencoded中间件立即添加(数据)事件处理程序,但如果第一个中间件执行pause()
并且如果json和urlencoded中间件执行resume()
则更好看到明确暂停的流 - 这可以保证不会丢失任何数据。
答案 1 :(得分:0)
您正在搜索'body-parser'中间件。您可以通过多种方式获取正文,包括raw buffer或as text。
答案 2 :(得分:-2)
app.post('/ somepage',function(req,res){
var post_data = req.body.toString();
});