Express.js:将req.body转换为POST编码的字符串

时间:2011-10-14 07:51:37

标签: javascript http post node.js express

我正在使用express.bodyParser中间件,我正在尝试将req.body对象转换为POST编码的字符串。有没有办法做到这一点?

示例:

Name: Jonathan Doe
Age: 23
Formula: a + b == 13%!

变为:

Name=Jonathan+Doe&Age=23&Formula=a+%2B+b+%3D%3D+13%25%21

2 个答案:

答案 0 :(得分:2)

Node有一个模块。

var qs = require('querystring');
...
console.log(qs.stringify(req.body));

但是无论如何,连接/表达将原始主体存储在req.rawBody中。

答案 1 :(得分:0)

我认为这应该相当简单 - 你应该能够像在浏览器中那样做。此函数将对象/数组的所有字符串/数字成员转换为可用作POST正文的字符串:

var objectToPostBody = function (object) {
  var i, out;
  if (!object) {
    return false;
  }
  out = [];
  for (i in object) {
    if (typeof object[i] === 'string' || typeof object[i] === 'number') {
      out[out.length] = encodeURIComponent(i) + '=' + encodeURIComponent(object[i]);
    }
  }
  return out.join('&');
};

如果你想处理子数组/子对象,这个函数会变得更复杂,但是对于你上面描述的内容,我认为应该这样做。