Экспресс - `req.body` всегда пусто - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь создать приложение с полным стеком (MERN). Когда я отправляю запрос на мой сервер Express с JSON, я всегда вижу, что мой req.body пуст. Я нигде не вижу свой JSON внутри моего запроса.

Я пытался использовать только app.use(bodyParser.json()) и app.use(bodyParser.urlencoded({ extended: true }));, но без изменений.

index.js

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true })); // for encoded bodies
console.log("App");
require("./schema/data");
require("./routes/home_routes")(app);
require("./routes/table_routes")(app);
require("./routes/utility_routes")(app);

utility_routes.js

const mongoose = require("mongoose");
const Data = mongoose.model("data");
module.exports = app => {
  app.get("/api/search_member", (req, res) => {
    console.log("Utility", req);
    console.log("Req Done");
    // const search = await Data.findById({ member_id: req.body.member_id });
    // console.log(search);
  });
};

request.body

[0]   body: {},
[0]   route:
[0]    Route {
[0]      path: '/api/search_member',
[0]      stack: [ [Layer] ],
[0]      methods: { get: true } } }

запрос от клиента

 onSearch = async value => {
      console.log(value);
      if (value) {
        const searchData = await axios.get("/api/search_member", { value });
        console.log(searchData);
      }
    };

Ответы [ 2 ]

2 голосов
/ 17 июня 2019
You are making a GET request. GET request do not send body. To get req.body, make POST request to server.

Firstly:-

    const searchData = await axios.post("/api/search_member", { value });

And Secondly,

     app.POST("/api/search_member", (req, res) => {
        console.log("Utility", req);
        console.log("Req Done");            
      });
0 голосов
/ 17 июня 2019

Это то, что я использую, чтобы принять json

var express = require('express');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var app = express();   
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
    extended: true
 })); 

 app.use(express.json());
 app.use(cookieParser());

А в запросе установить заголовки вот так.

Content-Type : application/json

С этими настройками у меня работают библиотеки axios и http из angular.

...