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 请求的正文的主要内容,如果未能解决你的问题,请参考以下文章
vue app axios post data to express 后端接收 undefined
ReactJS/Express Axios POST 返回 404,来自 Postman