Express 无法接收来自 axios put 请求的正文

Posted

技术标签:

【中文标题】Express 无法接收来自 axios put 请求的正文【英文标题】:Express can't receive body from axios put request 【发布时间】:2021-09-24 17:42:47 【问题描述】:

我目前正在使用一个示例快递应用,如下所示:

const express = require('express')
const app = express()
const port = 3000

app.post('/post', (req, res) => 
    console.log(req)
    res.send('Hello World!')
)

app.listen(port, () => 
  console.log(`Example app listening at http://localhost:$port`)
)

并向 ngrok 中映射的 url 发送 axios post 请求:

const axios = require('axios')

axios.post(`http://21f935bd559b.ngrok.io/post`, 
    "assetData": "foo"
).catch(err => 
    console.log(err);
)

post 请求将通过并发送给我一个非常大的输出,但没有 body 或 assetsData: "foo" 任何地方。我做错了什么?

【问题讨论】:

这是我得到的输出:pastebin.com/NNt48fm0 【参考方案1】:
    您可能忘记使用 JSON Parser。 和 您访问的不是请求正文,而是请求对象本身。

如果你在服务器处理正文中的 JSON 数据,那么你必须解析它。

那么 req 是一个请求对象,它将包含有关请求的所有内容,您必须像 req.body 一样访问它的主体

const express = require('express')
const app = express()
const port = 3000

// Add this line
app.use(express.json());

app.post('/post', (req, res) => 
    console.log(req.body)
    res.send('Hello World!')
)

app.listen(port, () => 
  console.log(`Example app listening at http://localhost:$port`)
)

添加 app.use(express.json()); 它将解析传入的请求正文。

【讨论】:

不客气,请确保访问 req.body 而不是 req 对象。

以上是关于Express 无法接收来自 axios put 请求的正文的主要内容,如果未能解决你的问题,请参考以下文章

在 axios 发布请求后使用 express 进行重定向

vue app axios post data to express 后端接收 undefined

无法连接到 NodeJS Express 服务器

ReactJS/Express Axios POST 返回 404,来自 Postman

无法使用来自axios请求的request.form在flask api中获取请求正文[重复]

Express 无法 PUT/DELETE 方法。出了啥问题?