Странный ответ от экспресс-сервера - PullRequest
0 голосов
/ 24 августа 2018

Я создал простой сервер, используя expressjs, и у меня есть метод post, но я получил странный ответ на статью post, и я не знаю, почему это произошло. Кто-нибудь может помочь мне? мой ожидаемый формат JSON.

Вот мой файл app.js

const express = require('express');
const mongoose = require('mongoose');
const articleModel = require('./models/article');
const bodyParser = require('body-parser');

enter code here

const db = mongoose.connect('mongodb://0.0.0.0:27017/bbs-api');
const app = express();

const port = process.env.PORT || 3000;

//support parsing of application/x-www-form-urlencoded post data
app.use(bodyParser.urlencoded({extended:true}));
// support parsing of application/json type post data
app.use(bodyParser.json());

const bbsRouter = express.Router();

bbsRouter.route('/articles').post( (req, res) => {
    console.log(req.body);
    // const newArticle = new articleModel(req.body);
    // newArticle.save();
    // res.status(201).send(newArticle);
    res.send(req.body);
});

app.use('/api', bbsRouter);
app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, () => console.log('Example app listening on port 8000!'))

Мой почтальон. Я регистрирую тело запроса, но оно не соответствует моим ожиданиям.

enter image description here

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

Попробуйте удалить body-parser и использовать связующее ПО непосредственно из express и установить urlencoded в false:

   app.use(express.urlencoded({extended:false}));
   // support parsing of application/json type post data
   app.use(express.json());

См. здесь Документация по опциям urlencoded

0 голосов
/ 24 августа 2018

если вы отправляете данные формы (application / x-www-form-urlencoded), вы можете сделать

bbsRouter.route('/articles').post( (req, res) => {
    console.log(req.params);
    // const newArticle = new articleModel(req.body);
    // newArticle.save();
    // res.status(201).send(newArticle);
    res.send(req.params);
});
0 голосов
/ 24 августа 2018

Вы отправляете неправильное тело запроса через почтальона, ваше тело должно быть в формате JSON, а не в форме данных

enter image description here

...