use*_*695 16 javascript node.js express
我在express.json()和express.urlencoded()上找不到任何文档.他们每个人到底做了什么?
Kea*_*ral 37
下面是应该清除疑虑的解释express.json()并express.urlencoded()和使用身体解析器。我花了一些时间才弄清楚。
什么是中间件?就是那些在您的应用程序方法中处理请求并发送响应的方法/函数/操作。
在讨论express.json()并express.urlencoded()具体考虑POST请求(即.post请求对象)和PUT请求(即.put请求对象)时
您不需要express.json(),express.urlencoded()对于GET请求或DELETE请求。
你需要express.json()和express.urlencoded()针对POST和PUT请求,因为在这两个请求你发送的数据(一些数据对象的形式)发送到服务器和你所要求的服务器来接受或存储的数据(对象),其被封闭在req.body(POST或PUT)请求的正文(即)
Express为您提供了中间件来处理请求正文中的(传入)数据(对象)。
一种。express.json()是express中内置的一种方法,用于将传入的请求对象识别为JSON对象。使用以下代码将此方法称为应用程序中的中间件:app.use(express.json());
b。express.urlencoded()是express中内置的一种方法,用于将传入的请求对象识别为字符串或数组。使用以下代码将此方法称为应用程序中的中间件:app.use(express.urlencoded());
另外,我建议使用body解析器(它是NPM软件包)来执行相同的操作。它是由构建Express的同一位偷窥者开发的,旨在与Express配合使用。正文解析器曾经是express的一部分。考虑一下专门用于POST请求(即.post请求对象)和/或PUT请求(即.put请求对象)的正文解析器。
在人体分析仪中,您可以
// 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 }));
Run Code Online (Sandbox Code Playgroud)Pau*_*aul 11
在json和urlencoded中间件是两部分bodyParser.这就是README所说的:
bodyParser([选项])
返回分析
json和的中间件urlencoded.将options被传递到两个中间件.bodyParser.json([选项])
返回仅解析的中间件
json.选项是:
strict- 只解析对象和数组limit<1mb> - 最大请求体大小reviver- 传递给JSON.parse()bodyParser.urlencoded([选项])
返回仅
urlencoded使用qs模块解析的中间件.选项是:
limit<1mb> - 最大请求体大小
小智 11
如果你问我“有什么区别之间express.urlencoded({延长:假})和express.json() ”
嗯,区别在于
如果您使用express.json()它将解析来自 post/fetch 请求的正文,除了html post 表单
它不会解析来自 html帖子表单的信息
<form action="/" method="POST">
<input type="text" name="username">
<button>Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
例如,如果你用“dean_ilham”填写表格然后提交它,表达不会知道身体里面是什么。
使用快递代码:
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}`);
})
Run Code Online (Sandbox Code Playgroud)
它会{}在您点击提交后发送。
但如果你取消注释app.use(express.urlencoded({extended: false})),那么你会得到{"username": "dean_ilham"}
所以区别在于express.json()是除了html post 表单之外的post 请求的正文解析器,而express.urlencoded({extended: false})是 html post 表单的正文解析器
Moh*_*eid 11
此中间件在 Express v4.16.0及更高版本中可用。
\napp.use(express.urlencoded({ extended: true}))\nRun Code Online (Sandbox Code Playgroud)\nExtended[boolean]:此选项允许选择使用查询字符串库(当为 false 时)或 qs 库(当为 true 时)解析 URL 编码数据。\xe2\x80\x9cextended\xe2\x80\x9d 语法允许将丰富的对象和数组编码为 URL 编码格式,从而通过 URL 编码提供类似 JSON 的体验
\n快递文档:- https://expressjs.com/en/api.html#express.urlencoded
\nPra*_*shi 11
当您使用 post 方法提交表单(默认 content-type = application/ x-www-form-urlencoded )时,需要express.urlencoded(),并且您需要使用 req.body 访问该表单数据,如果您不这样做使用它 req.body 将是未定义的。
小智 6
什么是中间件
要了解 express.json 和 express.urlencoded 的作用,您必须了解中间件是什么。
中间件是 expressJS 中的函数或方法,用于对向服务器发出的请求执行各种操作。
到现在为止,您应该知道如何使用 express 获取对路由的请求。
app.get("/api/houses", (req, res) => {
console.log("Received request");
res.send("houses")
})
Run Code Online (Sandbox Code Playgroud)
中间件的重要性
上面的代码是 express 如何处理 get 请求的典型示例。但是在您希望对向服务器发出的每个请求进行操作的情况下。您不希望在每条路线中都重复代码。
在这个阶段,中间件可以派上用场。中间件就像每个请求的通用接收器。
app.use((req, res, next) => {
console.log("Verifing request");
next();
})
Run Code Online (Sandbox Code Playgroud)
以上是一个自定义中间件,它验证对我的服务器发出的每个请求,并根据请求的类型将广告发送到下一个适当的路由中间件。(获取、发布、放置等)
内置中间件
现在 expressJS 已经有一些已经制作好的中间件,可以帮助开发人员执行一些繁琐的任务。比如将请求正文转换为 JSON 等等。
这些内置 ExpressJS 中间件的示例是
express.json()是一个内置的 express 中间件,可以将请求体转换为 JSON。
express.urlencoded()就像 express.json() 将请求正文转换为 JSON,它还执行一些其他功能,例如:将表单数据转换为 JSON 等。
| 归档时间: |
|
| 查看次数: |
13799 次 |
| 最近记录: |