Node.jsサーバーに送信された送信リクエストのフォームデータを回復できないようです。サーバーコードとpostリクエスト(chromeのpostmanを使用して送信)の下に配置しました。
リクエストの送信
POST /api/login HTTP/1.1
Host: localhost:8080
Cache-Control: no-cache
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="userName"
jem
----WebKitFormBoundaryE19zNvXGzXaLvS5C
NodeJSサーバーコード
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(bodyParser());
app.all('/*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type,accept,access_token,X-Requested-With');
next();
});
var port = process.env.PORT || 8080; // set our port
var router = express.Router(); // get an instance of the express Router
router.get('/', function(req, res) {
res.json({ message: 'I am groot!' });
});
// Login
router.route('/login')
.post(function(req, res){
console.log('Auth request recieved');
// Get the user name
var user = req.body.userName;
var aToken = getToken(user);
res.json({
'token':'a_token'
});
});
app.use('/api', router);
app.listen(port);
ログインメソッドは、req.body.userName
、 しかしながら、 req.body
は常に空です。 SOでこのような動作を説明する他のケースを見てきましたが、ここでは関連する回答は適用されませんでした。
手伝ってくれてありがとう。
一般的に、エクスプレスアプリでは、_req.body
_に本文を含めるために、適切な body-parserミドルウェア を指定する必要があります。
[編集済み]
JSONだけでなく、URLエンコード(非マルチパート)フォームデータの解析が必要な場合は、以下を追加してみてください。
_// Put this statement near the top of your module
var bodyParser = require('body-parser');
// Put these statements before you define any routes.
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
_
最初に、 body-parser を_package.json
_のdependencies
プロパティに追加してから、_npm update
_を実行する必要があります。
マルチパートフォームデータを処理するために、bodyParser.urlencoded()
ボディパーサーは機能しません。マルチパートボディの解析については、 ここに推奨されるモジュール を参照してください。
ファイルのアップロードをサポートするmultipart/form-dataリクエストを処理するには、multerモジュールを使用する必要があります。 multerミドルウェアのnpmリンク
BodyParser.json()を最初にこの順序で配置してください。 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true }));