首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >express.json()和express.urlencoded()是什么?

express.json()和express.urlencoded()是什么?
EN

Stack Overflow用户
提问于 2014-04-24 03:15:53
回答 6查看 175.9K关注 0票数 150

我找不到关于express.json()express.urlencoded()的任何文档。他们每个人到底做了什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-04-24 03:23:22

jsonurlencoded中间件都是bodyParser的一部分。自述是这样说的:

bodyParser(选项) 返回分析jsonurlencoded的中间件。options被传递给这两个中间件。 BodyParser.json(选项) 返回只解析json的中间件。备选方案如下:

  • strict只解析对象和数组
  • limit <1mb> -最大请求体大小
  • reviver -传递给JSON.parse()

BodyParser.urlencoded(选项)

返回只使用urlencoded模块解析qs的中间件。备选方案如下:

  • limit <1mb> -最大请求体大小
票数 46
EN

Stack Overflow用户

发布于 2018-08-14 14:53:58

以下是应该消除对express.json()express.urlencoded()的疑虑的解释,以及使用body解析器。我花了些时间才弄清楚这件事。

  1. 什么是中间件?在处理请求和在应用程序方法中发送响应之间调用的是这些方法/函数/操作。
  2. 在谈到express.json()express.urlencoded()时,要特别考虑POST请求(即.post请求对象)和PUT请求(即.put请求对象)
  3. 对于GET请求或删除请求,不需要express.json()express.urlencoded()
  4. 对于POST和PUT请求,您需要express.json()express.urlencoded(),因为在这两个请求中,您都是向服务器发送数据(以某些数据对象的形式),并且要求服务器接受或存储该数据(对象),该数据(对象)包含在该请求(POST或PUT)的主体(即req.body)中。
  5. Express为您提供中间件来处理请求正文中的(传入)数据(对象)。 express.json()是内置在express中的一种方法,用于将传入的请求对象识别为JSON对象。此方法作为中间件在您的应用程序中使用代码:app.use(express.json());调用。 express.urlencoded()是内置在express中的一种方法,用于将传入的请求对象识别为字符串或数组。此方法作为中间件在您的应用程序中使用代码:app.use(express.urlencoded());调用。
  6. 或者,我建议使用body解析器(它是NPM包)来做同样的事情。它是由建造快车的同一个偷窥者开发的,并被设计用来与快车一起工作。身体解析器曾经是快递的一部分。想一想专门用于POST请求(即.post请求对象)和/或PUT请求(即.put请求对象)的正文解析器。
  7. 在体解析器中,您可以这样做。 //调用body-解析器来处理来自POST请求变量bodyParser =bodyParser.json(‘body-解析器’)的请求对象;//解析应用程序/ JSON,基本上将传入的请求对象解析为JSON对象app.use(bodyParser.json());//解析application/x-www-form-urlencoded,基本上只能在字符串或数组app.use(bodyParser.urlencoded({ extended: false }))中解析传入请求对象;//结合上面的两个,然后您可以解析传入的请求对象(如果对象是嵌套的对象,或者通常是任何类型)。app.use(bodyParser.urlencoded({ extended: true }));
票数 385
EN

Stack Overflow用户

发布于 2021-05-04 22:58:16

如果你问我“ express.urlencoded({extended: false})express.json()之间的差异是什么”,那么,区别是:

  • express.json()

如果您使用express.json(),它将从post/fetch请求解析主体,除了从html表单中的。它不会解析html post表单中的信息:

代码语言:javascript
复制
<form action="/" method="POST">
    <input type="text" name="username">
    <button>Submit</button>
</form>

例如,如果你用"dean“填写表格,然后提交它,Express就不会知道如何在正文中使用以下表示代码:

代码语言:javascript
复制
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表单的正文解析器。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23259168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档