我需要为POST请求获取rawBody(缓冲区),但我只需要在我的应用程序中的单个路径上执行此操作。
目前,我在我的主app.js
中使用以下内容:
app.use(bodyParser.json({ verify: function(req, res, buf) { req.rawBody = buf; }}));
这可行,但它正在为每个路由发送缓冲区。这是不可取的,因为它为我的应用程序中的每个请求使用两倍的RAM。
如何在我需要的单一路线上获取rawBody?
答案 0 :(得分:1)
通常,您将创建该单一路由并内联中间件:
app.post('/route', bodyParser.json(...), function(req, res) {
...
});
接着是“正常”设置:
app.use(bodyParser.json());
app.post('/another-route', function(req, res) {
...
});
您也可以考虑使用bodyParser.raw()
。
bodyParser.json()
答案 1 :(得分:0)
如果要简单地引用具体路线,那么这将是有效的。这是一个非常简单的想法表示:
var routeIWantToBuffer = "someroute";
app.use(bodyParser.json(
{
verify: function(req, res, buf) {
if(req.route === routeIWantToBuffer) req.rawBody = buf;
}
}
));
通常,路由/使用函数也有一个next
参数,用于继续链。我不是说这是错的,但我不知道你的代码的其余部分是什么样的。但我希望它看起来像这样:
var routeIWantToBuffer = "someroute";
app.use(bodyParser.json(
{
verify: function(req, res, buf, next) {
if(req.route === routeIWantToBuffer) req.rawBody = buf;
next();
}
}
));