为了账号安全,请及时绑定邮箱和手机立即绑定

Axios POST 的发送状态和数据未显示在 req.body 中

Axios POST 的发送状态和数据未显示在 req.body 中

幕布斯7119047 2023-02-17 17:52:47
我正在使用 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);


查看完整回答
反对 回复 2023-02-17
?
慕标琳琳

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+ )


查看完整回答
反对 回复 2023-02-17
  • 2 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信