Почему req.body всегда пуст при использовании Postman для вызова Express с использованием JSON?

У меня есть простой экспресс-сервер, настроенный так...

const PORT = process.env.PORT || 3001;
import express from "express";  // eslint-disable-line
import bodyParser from 'body-parser';

export class BaseApp{
    constructor(port){
        const p = port || PORT;
        this.express = express();
        this.express.use(bodyParser.json());
        this.express.listen(p, (err)=>{
            if (err) throw err;
            return console.info(`Healthcheck server is listening on ${port}`);
        });
    }
}

const SearchRoute = function(app) {
    const Router = express.Router();
    const HANDLE_POST = (req, res)=> {
        console.info("Metadata is " + JSON.stringify(req.body));
        res.send("done");
    };
    Router.post("/", HANDLE_POST);
    app.use("/search", Router);
};
export class SearchApp extends BaseApp{
    constructor(){
        super(PORT);
        SearchRoute(this.express);
    }
}
new SearchApp(); // eslint-disable-line no-new

Когда я запускаю и использую почтальон (в необработанном виде с выбранным приложением/json) и отправляю через почту, отображается терминал...

Metadata is {}

хотя мое тело было...

Почему req.body всегда пуст при использовании Postman для вызова Express с использованием JSON?

Я подтвердил, что мой заголовок правильный

Почему req.body всегда пуст при использовании Postman для вызова Express с использованием JSON?

Почему тело пустое?

Еще одно замечание: если я конвертирую в application/x-www-form-urlencoded, он работает, но мне нужен json.

JGleason 01.02.2019 17:24

Также curl отлично работает, поэтому я меняю заголовок

JGleason 01.02.2019 17:26
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
2
93
1

Ответы 1

Попробуйте установить заголовок типа контента с помощью «application/json» вместо «application/javascript».

Другие вопросы по теме