отправленные данные axios post api дают пустой объект в console.log (req.body) на стороне сервера

#javascript #node.js #reactjs #axios

#javascript #node.js #reactjs #axios

Вопрос:

Я начал с nodejs и пытался отправить данные в post api с помощью axios, но не получил их на стороне сервера вот моя настройка

КЛИЕНТ

 export default class App extends Component {
  componentDidMount() {
    const headers = {
      'Content-Type': 'application/json',
      'Authorization': 'JWT fefege...'
    }
    let data = { title: "abc", price: 20 }; // i am sending this data 
    axios
      .post("http://localhost:5000/add-product", data, {
        headers: headers,
      })
      .then((res) => console.log(res))
      .catch((err) => console.log(err));
  }
 
  render() {
    return (<div></div>);
  }
}
  

НА СТОРОНЕ СЕРВЕРА

 const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const app = express();
let cors = require("cors");
const productRoutes = require("./routes/product");
app.use(cors());

app.use(bodyParser.urlencoded({ extended: false }));
app.use(productRoutes);
app.listen(5000)
  

продукты routes.js файл

 const express = require('express');

const productController = require('../controllers/product');

const router = express.Router();
router.post('/add-product', productController.addProduct);
module.exports=router
  

файл контроллера

  exports.addProduct = (req, res, next) => {
console.log(req.body) //gives me {} everytime
 }
  

здесь каждый раз, когда я отправляю объект со стороны клиента, я вижу {} как консоль

Оба моих проекта выполняются на localhost: 3000 и 5000 соответственно

Ответ №1:

Добавить

 app.use(bodyParser.json());