如何在不使用bodyParser的情况下访问表单数据?

时间:2015-07-01 17:03:24

标签: javascript node.js express

我总是看到bodyParser用于访问已发布的表单内容。通过req.body访问它。但是,如果您不想使用bodyParser

,您将如何访问该数据?

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

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

2 个答案:

答案 0 :(得分:11)

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();
  });
});

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

  • busboy的
  • 多方
  • 强大
  • multer

答案 1 :(得分:1)

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