Axios Post 请求发送未定义

Posted

技术标签:

【中文标题】Axios Post 请求发送未定义【英文标题】:Axios Post Request Sending Undefined 【发布时间】:2021-06-08 08:30:12 【问题描述】:

我在将数据从 Axios 发布请求发送到我的 ExpressJS 发布路由时遇到问题。当我尝试读取在发布路线上发送的数据时,它显示为未定义。这是我的 Axios 帖子:

axios.post('http://localhost:3000/temps/heating', 
    messageType: 'heating',
    toggle: 'on'
).then(res => 
    console.log(res);
).catch(e => 
    console.log(e)
)

这是我下面的 ExpressJS Post 路由。我尝试使用req.params req.body & req.messageType

routes.post('/heating', (req, res, next) => 
    const messageType = req.data;
    console.log(messageType);
)

我以为是因为 Axios 正在发送“数据”,所以我在 NodeJS 的 post 路由上请求数据?

谢谢

【问题讨论】:

你可以尝试打印'req',看看你会得到什么。你应该有 req.messageType 您的 Express 应用是否使用 body-parser 或类似名称? 【参考方案1】:

看起来您正在节点应用程序中使用 express.js。如果是这样,那就是const messageType = req.body.messageType

【讨论】:

您好,感谢您的回复。我试过了,但得到一个 TypeError: Cannot read property 'messageType' of undefined。有什么建议吗? 您需要在nodejs+ expressjs中添加body-parser,以便在nodejs中提取json数据并使用req.body.messageType获取值。 npmjs.com/package/body-parser【参考方案2】:

在您的快递应用中确保使用body-parser:https://expressjs.com/en/resources/middleware/body-parser.html

const bodyParser = require('body-parser');
app.use(bodyParser.json());

在您的路线中,您应该能够访问req.body.messageType

routes.post('/heating', (req, res, next) => 
    const messageType = req.body.messageType;
    console.log(messageType);
)

【讨论】:

以上是关于Axios Post 请求发送未定义的主要内容,如果未能解决你的问题,请参考以下文章

req.user 在 axios POST 请求中未定义,但 GET 工作正常

AXIOS POST 请求未发送,功能停止工作

Vuex:Axios GET 请求在组件内部返回未定义

在 VueJS 中使用 Axios - 这个未定义

POSTMAN 中的 POST 请求发送的参数始终未定义为 express 中的值

POST 请求的身份验证错误:“未提供身份验证凭据”使用 Axios,但使用 POSTMAN 工作