node.js - 在 body-parser 是隐式的新快递中,如何在中间件中获取原始请求正文?
问题描述
我想在我的 Express 应用程序的一个中间件中获取原始请求正文。Stackoverflow 上有几篇文章展示了如何做到这一点(例如Node.js - 使用 Express 获取原始请求正文或编写快速中间件以在 body-parser 之前获取原始请求正文),但是:
- 他们使用 body-parser,我相信它是新的 Express 版本内置的,所以不知道在这种情况下如何使用它
- 他们在 中提取原始请求
app.use()
,这意味着所有路由都将提取原始请求,而我只想在一个路由中提取它(更具体地说,在一个独立的中间件中,该中间件深埋在我的代码中app.js
,而不是我想要的能够只传递req
元素并在那里提取其原始主体)。
对最好的方法有什么建议吗?
解决方案
假设您在到达此路由之前尚未解析主体(使用 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 中可用
推荐阅读
- java - 如果我删除同一类中另一个集合的所有元素,为什么 Hibernate 会删除一个集合中的所有元素?
- google-cloud-storage - 在上传文件过程中创建 GCS 文件夹中的错误 ACL
- angular - 多个组件Angular 6中的相同代码
- django - 搜索按钮显示错误的结果 django?
- javascript - 关于异步函数中变量处理的问题。这段代码会导致不一致吗?
- python - 计算循环小数的周期长度
- android - 在 Android Pie 上启动 context.startService(intent)
- networking - 用于网络策略的 Kubernetes 准入控制器
- c# - 从另外两个表中插入数据到一个表中
- shell - 用于检查用户在其 Windows 机器上使用密码的脚本