POST postmanを使用してリクエストをlocalhost:8080/api/newUserにリクエスト本文とともに送信すると:
{name: "Harry Potter"}
サーバー側でconsole.log(req.body)は次のように出力します。
{ '{name: "Harry Potter"}': '' }
server.js
var express = require('express');
var app = express();
var router = express.Router();
var bodyParser = require('body-parser');
app.use('/', express.static(__dirname));
router.use(function(req, res, next) {
next();
});
router
.route('/newUser')
.post(function(req, res) {
console.log(req.body);
});
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // support json encoded bodies
app.use('/api', router);
app.listen(8080);
私は何が間違っているのですか?
Express.jsでは、ミドルウェアを宣言する順序が非常に重要です。 bodyParser
ミドルウェアは、独自のミドルウェア(APIエンドポイント)よりも早く定義する必要があります。
var express = require('express');
var app = express();
var router = express.Router();
var bodyParser = require('body-parser');
app.use('/', express.static(__dirname));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json()); // support json encoded bodies
router
.route('/newUser')
.post(function(req, res) {
console.log(req.body);
});
app.use('/api', router);
app.listen(8080);
'Content-Type':'application/json'
BodyParserが本体を解析できるようにします。
*それは私のために働くものです。私はexpress(body-parser)でangular 2+を使用しています