Javascript 什么是express.json()和express.urlencoded()?
我找不到关于express.json()和express.urlencoded()的任何文档。他们每个人具体做什么 json和Javascript 什么是express.json()和express.urlencoded()?,javascript,node.js,express,Javascript,Node.js,Express,我找不到关于express.json()和express.urlencoded()的任何文档。他们每个人具体做什么 json和urlencoded中间件都是。自述文件是这样说的: bodyParser([选项]) 返回同时解析json和urlencoded的中间件。选项被传递给两个中间件 json([选项]) 返回仅解析json的中间件。这些选择包括: strict-仅解析对象和数组 限制-最大请求正文大小 reviver-传递到JSON.parse() bodyParser.urlenco
urlencoded
中间件都是。自述文件是这样说的:
bodyParser([选项])
返回同时解析json
和urlencoded
的中间件。选项
被传递给两个中间件
json([选项])
返回仅解析json
的中间件。这些选择包括:
-仅解析对象和数组strict
-最大请求正文大小限制
-传递到reviver
JSON.parse()
urlencoded
的中间件。这些选择包括:
-最大请求正文大小限制
下面的解释应该可以消除对
express.json()
和express.urlencoded()
以及主体解析器使用的疑问。我花了一些时间才弄明白
express.json()
和express.urlencoded()
时,请特别考虑POST请求(即.POST请求对象)和PUT请求(即.PUT请求对象)express.json()
和express.urlencoded()
express.json()
和express.urlencoded()
,因为在这两个请求中,您都是向服务器发送数据(以某些数据对象的形式),并要求服务器接受或存储包含在正文中的数据(对象)(即,Request.body
)该(POST或PUT)请求的express.json()
是一种内置于express中的方法,用于将传入的请求对象识别为json对象。此方法在应用程序中使用以下代码作为中间件调用:app.use(express.json());
b、 express.urlencoded()
是一种内置于express中的方法,用于将传入的请求对象识别为字符串或数组。此方法在应用程序中被称为中间件,使用以下代码:app.use(express.urlencoded());
// calling body-parser to handle the Request Object from POST requests
var bodyParser = require('body-parser');
// parse application/json, basically parse incoming Request Object as a JSON Object
app.use(bodyParser.json());
// parse application/x-www-form-urlencoded, basically can only parse incoming Request Object if strings or arrays
app.use(bodyParser.urlencoded({ extended: false }));
// combines the 2 above, then you can parse incoming Request Object if object, with nested objects, or generally any type.
app.use(bodyParser.urlencoded({ extended: true }));
什么是中间件 要了解express.json和express.urlencoded的功能,您必须了解什么是中间件 中间件是expressJS中的函数或方法,用于对向服务器发出的请求执行各种操作 现在,您应该知道如何使用express获取路由请求
app.get("/api/houses", (req, res) => {
console.log("Received request");
res.send("houses")
})
中间件的重要性
上面的代码是express如何处理get请求的典型示例。但是在您希望对服务器的每个请求都执行操作的情况下,您不希望在每个路由中重复代码
在这一阶段,中间件起到了解救的作用。对于每个请求,中间件就像一个通用的接收器
app.use((req, res, next) => {
console.log("Verifing request");
next();
})
上面是一个自定义中间件,它验证向我的服务器发出的每个请求,并发送ad,根据请求的类型将请求发送到下一个适当的路由中间件。(GET、POST、PUT等)
内置中间件
现在expressJS已经有了一些中间件,可以帮助开发人员完成一些繁琐的任务,比如将请求体转换为JSON等等
这些内置ExpressJS中间件的示例如下
- express.json()
- express.urlencoded()
<form action="/" method="POST">
<input type="text" name="username">
<button>Submit</button>
</form>
单击“提交”后,它将发送{}
但是如果您取消了app.use(express.urlencoded({extended:false}))的注释,
然后您将获得{“用户名”:“dean_ilham”}
因此区别在于express.json()是一个post请求的主体解析器,除了html post表单和express.urlencoded({extended:false})是一个html post表单的主体解析器如果您使用的是express>=4.16.0,主体解析器已经在express.json()方法下重新添加
和express.urlencoded()
和app.use(bodyParser.urlencoded({extended:true}));
不组合app.use(bodyParser.json());
和app.use(bodyParser.urlencoded({extended:false})
const express = require('express')
const app = express()
app.use(express.json())
// app.use(express.urlencoded({ extended: false }))
app.use(express.static("public"))
app.get("/", (req, res) => {
res.sendFile("index.html")
})
app.post("/", (req, res) => {
res.send(req.body)
})
const port = process.env.PORT || 3001
app.listen(port, () => {
console.log(`Server Up in Port ${port}`);
})