【问题标题】:body undefined on axios post request在 axios 发布请求上未定义正文
【发布时间】:2021-08-27 18:59:30
【问题描述】:

我在后端有这个端点(节点,快递):

router.post('/createUser', (req, res, next) => {
  try{
    const { user } = req.body;
    if(!user) next(createError(401))
    data.push(user);
    res.status(200).json(user)
  } catch(e) {
    next(e)
  }
})

这个在前面(服务)

class EmployeeService {
  constructor() {
    this.api = axios.create({
      baseURL: process.env.REACT_APP_BACK_DOMAIN || 'http://localhost:4000',
      withCredentials: true
    })
  }

  getPaginated = (page, size) => this.api.get(`/?page=${page}&size=${size}`).then(({data}) => data)

  createUser = user => this.api.post('/createUser', user).then(({data}) => data)
}

当我收到createUser 请求时,我从req 中获取正文,但它是未定义的,我控制台记录“req”,这返回了incoming message object 为什么?我需要接收正文以推送数组:(

我在前面创建的对象:

【问题讨论】:

    标签: node.js express axios


    【解决方案1】:

    在我看来,您发送的用户对象有误,试试这个:

    user = {id:1,name:"nombre"}
    
    createUser = this.api.post('/createUser', user).then(({data}) => data)
    

    并检查body是否到达后端

    【讨论】:

    • 我从来没有收到身体背面:/
    【解决方案2】:

    这是让我们回答,但是......

    正如您提到的,您正在接收一个对象,但无法通过 req.body 获取过多数据

    服务器 API 和 Axios 工作正常,那么问题出在解析器上

    尝试如下添加解析器,并确保它在app.use("/", router)之前

    const express = require('express');
    const app = express();
    var router = express.Router();
    
    // create application/x-www-form-urlencoded parser
    app.use(express.urlencoded({ extended: false }));
    // parse application/json
    app.use(express.json());
    
    app.use("/", router);
    

    有关更多信息,请查看此 Express.js req.body undefined

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 2021-11-17
      • 2022-12-10
      • 2020-01-08
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      相关资源
      最近更新 更多