【问题标题】:How would you access form data without using bodyParser?在不使用 bodyParser 的情况下如何访问表单数据?
【发布时间】:2015-07-02 02:29:46
【问题描述】:

我总是看到bodyParser 被用来让您访问已发布的表单内容。通过在req.body 中访问它。但是,如果您不想使用 bodyParser,您将如何访问这些数据?

相关/类似问题 - bodyParser 如何为您提供req.body 中的数据?

编辑:我问的是这些东西在低层次上是如何工作的。这个possible duplicate 似乎通过推荐某些中间件并描述如何使用它们来解决这个问题。

【问题讨论】:

标签: javascript node.js express


【解决方案1】:

bodyParser 是一个将数据流解析为 json 的中间件。 我看不出不使用 bodyParser 的理由(如果您不想处理多部分主体),但如果您愿意,您可以自己解析流。它将类似于下面的中间件:

app.use(function( req, res, next ) {
  var data = '';
  req.on( 'data', function( chunk ) {
    data += chunk;
  });
  req.on( 'end', function() {
    req.rawBody = data;
    console.log( 'on end: ', data )
    if ( data && data.indexOf( '{' ) > -1 ) {
      req.body = JSON.parse( data );
    }
    next();
  });
});

如果要解析多部分正文,可以使用以下模块之一:

  • 服务员
  • 多方
  • 强大
  • 穆特

【讨论】:

  • 添加这个中间件会导致我的请求超时
【解决方案2】:

对此的粗略回答是使用 https://github.com/stream-utils/raw-body 解析请求正文,然后在结果上运行 JSON.parse。这就是 body-parser 获取请求正文的方式,然后从中解析 json、url 和原始文本数据。

【讨论】:

    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多