Express 无法从 axios put 请求接收正文

Express can't receive body from axios put request

我目前使用的示例快递应用如下所示:

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 请求将通过并向我发送一个非常大的输出,但没有正文或 assetData: "foo" 任何地方。我做错了什么?

  1. 您可能忘记使用 JSON 解析器。 和
  2. 您没有访问请求正文,而是访问了请求对象本身。

如果您要在服务器处理正文中的 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()); 它将解析传入的请求正文。