如何解决Axios POST的发送状态和数据未显示在req.body中
我正在使用React,并希望使用Axios发出POST请求。我正在尝试将表单数据发送到我的Node后端。
我正在尝试在POST请求中发送一个对象,该对象是将用户所有输入保存到表单的状态。
反应
const [formDetails,setFormDetails] = useState({})
const handleFormChange = (evt) => setFormDetails({ ...formDetails,[evt.target.name]: evt.target.value })
const sendInvoice = async (formDetails) => {
const response = await axios.post('/api/new_invoice',formDetails)
console.log(response)
}
节点路线
module.exports = (app) => {
// Create a new invoice
app.post('/api/new_invoice',async (req,res) => {
console.log('making a new invoice...')
try {
console.log(req.body)
res.send(req.body)
} catch (err) {
console.log(err)
res.status(400)
res.send({ error: err })
return
}
})
}
当我查看请求的主体时,即使发送表单时我看到状态仍是一个空对象。
我还尝试了对对象进行硬编码,该对象将在req.body上显示数据。
例如,如果我将请求更改为
const response = await axios.post('/api/new_invoice',{formData: 'this is form data'})
然后我可以在req.body中看到formData:'这是表单数据'
解决方法
您需要在sendInvoice函数中对formData进行字符串化
您还可以在此测试过API的邮递员那里分享示例请求正文吗?
let body= JSON.stringify(formData)
const config = {
headers: {
'Content-Type': 'application/JSON'
}
};
const res = await axios.post('/api/v1/new_invoice',body,config);
,
要处理来自 HTTP POST 请求的传入 JSON 对象,您需要编写以下代码 -
var express = require('express');
var app=express();
app.use(express.urlencoded()); // To parse URL-encoded bodies
app.use(express.json()); //To parse JSON bodies
// Note: (*applicable for Express 4.16+ )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。