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

2022-08-30 04:18:23

我无法在 和 上找到任何文档。他们每个人到底做了什么?express.json()express.urlencoded()


答案 1

这是应该清除对和 body-parser 的使用的疑虑的解释。我花了一些时间才弄清楚这一点。express.json()express.urlencoded()

  1. 什么是中间件?正是这些方法/函数/操作被调用 BETWEEN 处理请求并在应用程序方法中发送响应。

  2. 当谈论并具体考虑POST请求(即.post请求对象)和PUT请求(即.put请求对象)时express.json()express.urlencoded()

  3. 对于 GET 请求或删除请求,您不需要 和。express.json()express.urlencoded()

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

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

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

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

  6. 或者,我建议使用正文解析器(它是一个NPM包)来做同样的事情。它是由建造Express的相同窥视者开发的,旨在与Express一起使用。body-parser曾经是express的一部分。考虑专门针对POST请求(即.post请求对象)和/或PUT请求(即.put请求对象)的正文解析器。

  7. 在正文解析器中,您可以执行

    // 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 }));
    

答案 2

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

bodyParser([options])

返回同时解析 和 的中间件。将 传递到两个中间件。jsonurlencodedoptions

bodyParser.json([options])

返回仅解析 的中间件。选项包括:json

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

bodyParser.urlencoded([options])

返回仅使用 qs 模块进行分析的中间件。选项包括:urlencoded

  • limit<1mb> - 最大请求正文大小