当前位置: 首页 > 知识库问答 >
问题:

什么是快递。json()和express。urlencoded()?

赖淇
2023-03-14

我在express上找不到任何文档。json()express。urlencoded()。他们每个人具体做什么?

共有3个答案

聂建茗
2023-03-14

如果您问我“express.urlencoded({extended:false})和express.json()之间有什么区别?”

嗯,区别在于

如果你用快递。json()它将从post/fetch请求解析正文,但从html post表单解析除外

它不会解析来自html post表单的信息

<form action="/" method="POST">
    <input type="text" name="username">
    <button>Submit</button>
</form>

例如,如果你在表格上填上“dean_ilham”,然后提交,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}`);
})

单击提交后,它将发送{}

但是如果你取消注释app.use(express.urlencoded({扩展:假})),那么你会得到{"username":"dean_ilham"}

所以区别是显而易见的。json()是post请求的主体解析器,html post表单和express除外。urlencoded({extended:false})是html post表单的主体解析器

阮桐
2023-03-14

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

返回同时解析jsonurlencoded的中间件。选项被传递给两个中间件。

返回只解析json的中间件。选项是:

  • 严格-仅解析对象和数组

返回仅使用qs模块解析urlencoded的中间件。这些选择包括:

  • 限制
茅星华
2023-03-14

下面的解释应该可以澄清对express的疑问。json()express。urlencoded()和主体解析器的使用。我花了一些时间才弄明白。

>

  • 什么是中间件?在应用程序方法中处理请求和发送响应之间称为这些方法/函数/操作。

    当谈论express时。json()express。urlencoded()特别考虑POST请求(即.POST请求对象)和PUT请求(即.PUT请求对象)

    对于GET请求或DELETE请求,不需要express.json()express.urlencoded()

    你需要express。json()express。URLCoded(),用于POST和PUT请求,因为在这两个请求中,您都将数据(以某些数据对象的形式)发送到服务器,并要求服务器接受或存储该数据(对象),该数据(对象)包含在该(POST或PUT)请求的正文(即req.body)中

    Express为您提供了处理请求正文中(传入的)数据(对象)的中间件。

    a、 express。json()是一种内置于express中的方法,用于将传入的请求对象识别为json对象。此方法在应用程序中使用以下代码作为中间件调用:app。使用(express.json())

    b、 express。urlencoded()是express中内置的一种方法,用于将传入的请求对象识别为字符串或数组。此方法在应用程序中使用以下代码作为中间件调用:app。使用(express.urlencoded())

    或者,我建议使用body解析器(它是一个NPM包)来做同样的事情。它由构建express的同一位PEEP开发,旨在与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 }));
    

  •  类似资料:
    • 问题内容: 在NodeJS 模块 的文档中,示例代码包含。 什么是功能,它在哪儿定义? 问题答案: app对象在创建Express服务器时实例化。它具有一个可以在其中定制的 _ 中间件 堆栈_(现在在4.x版中已弃用)。 要设置中间件,您可以为要添加的每个中间件层调用(可以对所有路径通用,也可以仅在服务器处理的特定路径上触发),并将其添加到Express中间件堆栈中。中间件层可以在的多个调用中一个

    • 主要内容:什么是 JSON?,JSON 发展史,为什么要使用 JSON?,JSON 的不足,JSON 应该如何存储?,什么时候会使用 JSON,总结JSON 全称“JavaScript Object Notation”,译为“JavaScript 对象简谱”或“JavaScript 对象表示法”,是一种轻量级的、基于文本的、开放的数据交换格式。JSON 在 Web 开发领域有着举足轻重的地位,如果您想在 Web 开发领域大展身手的话,就必须了解 JSON。 数据交换是指,两个设备之间建立连接并互

    • 问题内容: 尽管非常了解JavaScript,但我对Node.js生态系统中的这三个项目的 确切 用途感到困惑。像Rails的架子吗?有人可以解释一下吗? 问题答案: [ 更新: 从4.0版本开始,Express不再使用Connect。但是,Express仍与为Connect编写的中间件兼容。我的原始答案如下。 我很高兴您对此提出疑问,因为对于那些关注Node.js的人们来说,这无疑是一个常见的困

    • 现在,我正在探索如何使用Express和MongoDB编写API。我还使用Angular来绘制路线和视图。我知道Firebase和AngularFire可以做到这一点,所以我可以一起绕过使用Express(或者我这么认为),让我的应用程序实时运行。 在Chris Esplin的这篇文章中,他指出他不能放弃Express,因为他需要它来编写promise,而不是在将他的npm包“箭袋-发票”与Fir

    • 问题内容: 我一直在尝试将编程的递归作为一个概念进行研究(尽管我专门研究Java),而这正是我最好的理解: 例如,在现实生活中,递归是当我们将两个反射镜彼此相对放置并且它们之间产生的图像是递归的。 但是我在编程中没有得到这个算法吗?有人可以给我一个简化的例子来理解递归吗? 问题答案: 基本上,函数是递归的 函数具有简单的基本情况,何时 所有其他情况都有规则化简为基本情况。 例如,要计算阶乘:

    • JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程语言。 JSON 是一种轻量级的数据交换格式,它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,