POST с Nodejs Express

К сожалению я получаю пустой body: {} в объекте запроса, когда я POST что-то к моему API через Insomnia (Форма конфигурации Form URL Encoded заголовок Content-Type: application/x-www-form-urlencoded):

Вот мой экспресс-код:

const express = require('express');
const app = express();
app.use(express.json());

app.post('/api/', function(req, res) {

    test = req.body.test;
    console.log(req);
    console.log(test);
    res.send("Hallo");
});

const port = 4000;
app.listen(port, () => console.log(`Listening on port ${port}...`));

Что я делаю неправильно? А также, что я должен изменить в своем коде, если я настрою Бессонницу, чтобы Форма как JSONЗаголовок Content-Type: application/json?

2 ответа

Доступно в Express v4.16.0 и далее:

app.use(express.urlencoded({ extended: false }));
app.use(express.json());

Для доступа к телу запроса используйте body-parser middleware и для отправки ответа в формате JSON используйте res.json()

https://www.npmjs.com/package/body-parser

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

app.post('/api/', function(req, res) {
    test = req.body.test;
    console.log(req);
    console.log(test);
    res.json({"message":"Hallo"}); //update here
});

const port = 4000;
app.listen(port, () => console.log(`Listening on port ${port}...`));
Другие вопросы по тегам