我找不到关于express.json()和express.urlencoded()的任何文档。他们每个人到底做了什么?
发布于 2014-04-24 03:23:22
json和urlencoded中间件都是bodyParser的一部分。自述是这样说的:
bodyParser(选项) 返回分析
json和urlencoded的中间件。options被传递给这两个中间件。 BodyParser.json(选项) 返回只解析json的中间件。备选方案如下:
strict只解析对象和数组limit <1mb> -最大请求体大小reviver -传递给JSON.parse()BodyParser.urlencoded(选项)
返回只使用urlencoded模块解析qs的中间件。备选方案如下:
limit <1mb> -最大请求体大小发布于 2018-08-14 14:53:58
以下是应该消除对express.json()和express.urlencoded()的疑虑的解释,以及使用body解析器。我花了些时间才弄清楚这件事。
express.json()和express.urlencoded()时,要特别考虑POST请求(即.post请求对象)和PUT请求(即.put请求对象)express.json()和express.urlencoded()。express.json()和express.urlencoded(),因为在这两个请求中,您都是向服务器发送数据(以某些数据对象的形式),并且要求服务器接受或存储该数据(对象),该数据(对象)包含在该请求(POST或PUT)的主体(即req.body)中。express.json()是内置在express中的一种方法,用于将传入的请求对象识别为JSON对象。此方法作为中间件在您的应用程序中使用代码:app.use(express.json());调用。
express.urlencoded()是内置在express中的一种方法,用于将传入的请求对象识别为字符串或数组。此方法作为中间件在您的应用程序中使用代码:app.use(express.urlencoded());调用。发布于 2021-05-04 22:58:16
如果你问我“ express.urlencoded({extended: false})和express.json()之间的差异是什么”,那么,区别是:
express.json()如果您使用express.json(),它将从post/fetch请求解析主体,除了从html表单中的。它不会解析html post表单中的信息:
<form action="/" method="POST">
<input type="text" name="username">
<button>Submit</button>
</form>例如,如果你用"dean“填写表格,然后提交它,Express就不会知道如何在正文中使用以下表示代码:
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}`);
})在您单击submit之后,它将发送{}。但是,如果您没有注释app.use(express.urlencoded({extended: false})),那么您将得到{"username": "dean"}。
因此,不同的是,express.json()是post请求的正文解析器,除了 html post表单,express.urlencoded({extended: false})是html表单的正文解析器。
https://stackoverflow.com/questions/23259168
复制相似问题