我不明白为什么在Express应用程序中需要体解析器,因为我们可以不使用体解析器来获取数据。 它到底做什么,怎么做?
当前回答
保持简单:
如果你使用post请求,那么你需要请求的主体,所以你 将需要体解析器。 不需要安装带有express的body-parser,但如果您愿意,则必须使用它 接收岗位请求。
app.use (bodyParser。Urlencoded ({extended: false}));
{ extended: false }
错误的意思是,在body对象中没有嵌套数据。注意:请求数据内嵌在请求体对象中。
其他回答
如果你不想使用单独的npm包体解析器,最新的express(4.16+)有内置的体解析器中间件,可以这样使用:
const app = express();
app.use(express.json({ limit: '100mb' }));
附:并不是所有的体解析功能都在表达式中。请参考文档以获得完整的使用方法
保持简单:
如果你使用post请求,那么你需要请求的主体,所以你 将需要体解析器。 不需要安装带有express的body-parser,但如果您愿意,则必须使用它 接收岗位请求。
app.use (bodyParser。Urlencoded ({extended: false}));
{ extended: false }
错误的意思是,在body对象中没有嵌套数据。注意:请求数据内嵌在请求体对象中。
让我们尽量减少技术性。
假设你正在发送一个html表单数据到node-js服务器,也就是说你向服务器发出了一个请求。服务器文件将在请求对象下接收您的请求。按照逻辑,如果你在服务器文件中记录这个请求对象你会看到表单数据,这些数据可以提取出来!实际上你没有!
那么,我们的数据在哪里?如果它不仅出现在我的请求中,我们将如何提取它。
简单的解释是,http以零碎的形式发送表单数据,以便在到达目的地时进行组装。那么如何提取数据呢?
但是,为什么每次都要手动解析数据块并将其组装起来呢?使用一种叫做“body-parser”的东西,它可以帮你做到这一点。
Body-parser解析您的请求并将其转换为可以轻松提取所需相关信息的格式。
例如,假设在前端有一个注册表单。您正在填写它,并请求服务器将详细信息保存在某个地方。
如果使用体解析器,则从请求中提取用户名和密码如下所示。
var loginDetails = {
username : request.body.username,
password : request.body.password
};
基本上,body-parser解析传入的请求,组装包含表单数据的块,然后为您创建这个body对象,并用表单数据填充它。
历史:
早期版本的Express曾经捆绑了许多中间件。bodyParser是附带的中间件之一。当Express 4.0发布时,他们决定从Express中移除捆绑的中间件,并将它们作为单独的包。在安装bodyParser模块后,语法从app.use(express.json())改为app.use(bodyParser.json())。
bodyParser在4.16.0版本中被添加回Express,因为人们希望它像以前一样与Express捆绑在一起。这意味着如果您使用的是最新版本,则不必再使用bodyParser.json()。您可以使用express.json()代替。
对于那些感兴趣的人来说,4.16.0的发布历史在这里,拉请求在这里。
好吧,言归正传,
实现:
你需要加的就是加,
app.use(express.json());
app.use(express.urlencoded({ extended: true}));
在路由声明之前,
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
快递公司会处理您的要求。:)
完整的例子是这样的,
const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true}));
app.post('/test-url', (req, res) => {
console.log(req.body)
return res.send("went well")
})
app.listen(3000, () => {
console.log("running on port 3000")
})
为了访问post数据,我们必须使用body解析器。基本上body-parser就是允许express读取body然后解析成我们能理解的Json对象。
推荐文章
- DeprecationWarning:当我将脚本移动到另一个服务器时,由于安全性和可用性问题,Buffer()已弃用
- 我如何确定正确的“max-old-space-size”为Node.js?
- npm犯错!代码UNABLE_TO_GET_ISSUER_CERT_LOCALLY
- Access-Control-Allow-Origin不允许Origin < Origin >
- 如何获得所有已注册的快捷路线?
- 你可以为你的组织托管一个私有的存储库来使用npm吗?
- 如何定位父文件夹?
- Gulp命令未找到-安装Gulp后错误
- 在Node.js中写入文件时创建目录
- 如何将自定义脚本添加到包中。Json文件,运行javascript文件?
- 使用child_process。execSync但保持输出在控制台
- SyntaxError:在严格模式下使用const
- 在Node.js中递归复制文件夹
- 如何在node.js中设置默认时区?
- “react-scripts”不被视为内部或外部命令