【问题标题】:Express can't receive body from axios put requestExpress 无法接收来自 axios put 请求的正文
【发布时间】: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" 任何地方。我做错了什么?

【问题讨论】:

标签: javascript node.js express axios ngrok


【解决方案1】:
  1. 您可能忘记使用 JSON Parser。 和
  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()); 它将解析传入的请求正文。

【讨论】:

  • 不客气,请确保访问 req.body 而不是 req 对象。
猜你喜欢
  • 2019-07-14
  • 1970-01-01
  • 2020-08-20
  • 2021-09-01
  • 2017-01-04
  • 1970-01-01
  • 2014-12-23
  • 2019-03-01
  • 2019-05-20
相关资源
最近更新 更多