在隐含主体解析器的新Express中,如何在中间件中获取原始请求主体?

时间:2019-03-18 12:41:07

标签: node.js express

我想在我的Express应用程序的其中一个中间件中获取原始请求正文。 Stackoverflow上有几篇文章显示了如何执行此操作(例如Node.js - get raw request body using ExpressWriting express middleware to get raw request body before body-parser),但是:

  • 他们使用body-parser,我相信它是Express新版本内置的,因此不确定在这种情况下如何使用
  • 他们在app.use()中提取原始请求,这意味着所有路由都将提取原始请求,而我只想在一条路由中提取它(更具体地说,是在代码中深埋的独立中间件中)而不是在app.js中,我希望能够将req元素传递到该元素并在其中提取其原始内容。

关于最佳方法的任何建议吗?

1 个答案:

答案 0 :(得分:0)

假设您在到达此路线之前尚未解析身体(使用body-parser或类似方法),则以下内容将在您的路线文件中起作用:

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');

router.get('/path', bodyParser.raw(options), (req,res){
   //your code
});

bodyParser.raw(options)将返回一个接受3个参数(req,res,next)的函数,原始主体将在req.body中可用