我正在使用 React 并想使用 Axios 发出 POST 请求。我正在尝试将表单数据发送到我的节点后端。我正在尝试在 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 invoiceapp.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 时,它是一个空对象,即使我可以在发送表单时看到状态存在。我还尝试对对象进行硬编码,这将在 req.body 上显示数据。例如,如果我将请求更改为const response = await axios.post('/api/new_invoice', {formData: 'this is form data'})然后我可以在 req.body 中看到 formData: 'this is form data'
2 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
您需要将 formData 字符串化,在您的 sendInvoice 函数中,
您还可以分享邮递员的示例请求正文吗?您已经在那里测试了 API
let body= JSON.stringify(formData)
const config = {
headers: {
'Content-Type': 'application/JSON'
}
};
const res = await axios.post('/api/v1/new_invoice', body, config);
慕标琳琳
TA贡献1830条经验 获得超9个赞
要处理来自 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+ )
添加回答
举报
0/150
提交
取消