用于检查请求体

时间:2016-02-02 22:14:30

标签: express body-parser

是否存在第三方中间件或为Express.js创建此类中间件的方法,允许拦截所有请求并检查请求的正文内容,而不会影响后续中间件,例如bodyParser或可能依赖的路由端点express-http-proxy的原始身体?

从我可以告诉bodyParser本身似乎以一种有点突兀的方式工作,不允许路由覆盖默认的解析行为。快速文档描述了如何通过bodyParser等中间件填充request.body。 bodyParser的这种行为从简单性和性能角度来看是有意义的,但并不能使它成为创建需要检查请求内容并让应用程序的其余部分无需修改的中间件的理想选择。尤其如此,根据解析中间件,结果可能是完全不同的格式。在进行了一些挖掘后,我想知道是否通常可以通过express来解决这个问题,或者一旦你阅读了请求主体,你就会消除使用诸如bodyParser或express-http-proxy之类的其他中间件的能力。身体直接。

可能相关:

1 个答案:

答案 0 :(得分:0)

You could always use the raw-body package with express middleware like so:

var getRawBody = require('raw-body');
var typer = require('media-typer');

app.use(function (req, res, next) {
  getRawBody(req, {
    length: req.headers['content-length'],
    limit: '1mb',
    encoding: typer.parse(req.headers['content-type']).parameters.charset
  }, function (err, string) {
    if (err) return next(err)
    req.text = string
    next()
  })
})

If your only concern is performance, I wouldn't worry too much about body-parser as it's unlikely to have a massive performance impact. If you can, I'd suggest you just use body-parser with a typical express middleware app.use(..) to inspect the request body.