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}...`));