req.body не появляется в почтальоне - PullRequest
0 голосов
/ 11 сентября 2018
I was sending the post request in raw and json format...

это конфигурация заголовка

So heres the code:

//app.js

const port =  process.env.PORT || 3000;
const express = require ('express');
const app = express();
const jsonParser = require('body-parser').json;
const routes = require('./routes/routes.js');


app.use(jsonParser());

app.use("/questions", routes);

//All routine stuff I'd say...

app.listen(port,(err)=>{
    if (!err)
            {console.log(`The express server is running at http://localhost:${port}`)}
});
//routes.js
const express = require('express');
const router = express.Router();

//GET /questions
//return all the questions from the db
router.get('/', function(req, res){
    res.json({response: "You sent me a get request"}); 
});

//POST /questions
//Route for creating questions
router.post("/", function(req, res){
    res.json({
        response: "you sent me a POST request",
        body: req.body

    });
});




module.exports = router;

это ошибка, которую я получаю после почтового запроса

Этоошибка, которую я продолжаю получать .. Я не знаю, как мне это исправить .. Я просто не могу заставить req.body появиться в Почтальоне ... Я не уверен, что я что-то пропустил или ничего не добавил или, возможно, бросил гаечный ключв передачах ... Любая помощь приветствуется.

//The error is as following
SyntaxError: Unexpected token c in JSON at position 3
    at JSON.parse (<anonymous>)
    at parse (C:\Restful\node_modules\body-parser\lib\types\json.js:89:19)
    at C:\Restful\node_modules\body-parser\lib\read.js:121:18
    at invokeCallback (C:\Restful\node_modules\raw-body\index.js:224:16)
    at done (C:\Restful\node_modules\raw-body\index.js:213:7)
    at IncomingMessage.onEnd (C:\Restful\node_modules\raw-body\index.js:273:7)
    at emitNone (events.js:106:13)
    at IncomingMessage.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Добавьте тело запроса, как указано на скриншоте, и это будет работать, так как ключи объекта должны быть строкой: Postman Request body

0 голосов
/ 12 сентября 2018

Вы можете использовать следующий код для решения вашей проблемы:

let bodyParser=require('body-parser');
app.use(bodyParser.json())
0 голосов
/ 11 сентября 2018

Ваш req.body может быть строкой ошибки, которая может привести к сумасшествию jsonParser.Добавьте console.log(req.body) перед вашим res.json вызовом для вашего router.post, чтобы увидеть, каково значение на самом деле.Это должно дать вам больше информации о том, почему он не анализирует.

Редактировать: Вы устанавливаете заголовок Content-Type на application/json в вашем запросе от Почтальона?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...