【问题标题】:Body parsers behaving weirdly身体解析器行为怪异
【发布时间】:2020-10-07 10:26:36
【问题描述】:

我正在尝试使用很少的 API 开发一个应用程序,我在这里遇到的问题是当我使用时

 app.use(bodyParser.urlencoded({ extended: false }));

作为我的中间件,它不接收我通过邮递员发送的请求(所有通过邮递员发送的请求都带有空的正文 idk 为什么。它接受所有通过 html 表单发送的请求。

另一方面,如果我使用

app.use(express.json({extended: false}))

作为我解析 json 对象的中间件,它接受来自邮递员的所有请求,但不接受来自我的浏览器表单的请求。谁能解释这里发生了什么?

【问题讨论】:

  • 您确定在邮递员和 HTML 中使用相同的正文格式吗?可以分享一下例子吗?
  • @Abhineet:两个语句都按预期工作。我看不出这些有什么问题。是否可以共享您在 Postman 中使用的示例数据以及类型,例如表单数据、原始数据、JSON 等
  • 我遇到了问题,我认为其中 1 个应该足以在两个平台上运行,但正如答案所示,我需要两者。我仍然需要阅读文档才能知道为什么会这样。 @AnastasiiaSolop 是的,我使用相同的正文格式:这里是实际请求快照的链接=> 邮递员:prntscr.com/uuxf30 HTML 表单:prntscr.com/uuxftj

标签: node.js rest express middleware body-parser


【解决方案1】:

为了使 express 能够解析 JSON 请求负载和简单的表单数据请求,您只需设置 两个 提到的中间件(注意 express.json() 没有扩展选项):

 app.use(bodyParser.urlencoded({ extended: false }));
 app.use(express.json());

有关详细信息,请参阅文档:

https://expressjs.com/en/api.html#express.json https://expressjs.com/en/api.html#express.urlencoded

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多