POST с Nodejs Express - PullRequest
       28

POST с Nodejs Express

0 голосов
/ 27 ноября 2018

К сожалению, я получаю пустое 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}...`));

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

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

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

app.use(express.urlencoded({ extended: false }));
app.use(express.json());
0 голосов
/ 27 ноября 2018

Для доступа к телу запроса используйте 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}...`));
...