javascript - 在 Express.js 应用程序中,如何获取源 POST 数据(原始字符串)?

标签 javascript node.js http post express

我正在像这样处理 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/

相关文章:

http - 如何 curl 或 wget 网页?

ios - UIImagePNGRepresentation 导致 HTTP 错误 403

c# - 回发后 Javascript 函数不起作用?

javascript - JavaScript 数据类型是什么?

node.js - 从 Node.js 后端向 iPhone 前端发送 JSON 错误 : "Error: Can' t set headers after they are sent. "

javascript - 如何在不影响其余页面样式的情况下加载带样式的 HTML 文件?

javascript - 在 React 中手动添加 'Other' 选项时遇到问题。是什么赋予了?

javascript - 在 html 页面中的 2 个元素之间画线

javascript - Nodejs如何正确导出变量

Python瓶模块导致 "Error: 413 Request Entity Too Large"