我正在像这样处理 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());
最佳答案
这是一种可能有效的解决方案:
// ...
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()
会更好 - 这将保证不会丢失数据。
关于javascript - 在 Express.js 应用程序中,如何获取源 POST 数据(原始字符串)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23041782/