次の Node.js コードがあります:
var express = require('express');
var app = express.createServer(express.logger());
app.use(express.bodyParser());
app.post('/', function(request, response) {
response.write(request.body.user);
response.end();
});
ここで次のようなものをPOSTすると:
curl -d user=Someone -H Accept:application/json --url http://localhost:5000
期待どおりの結果が得られますSomeone
。では、完全なリクエスト本文を取得したい場合はどうすればよいでしょうか。 実行してみましたが、Node.js は「最初の引数は文字列またはバッファである必要がありますresponse.write(request.body)
」という例外をスローし、 「送信後にヘッダーを設定することはできません」という例外で「無限ループ」に入ります。 を実行してから と記述した場合でも同様です。var reqBody = request.body;
response.write(reqBody)
ここで何が問題なのでしょうか?
また、 を使用せずに生のリクエストを取得することはできますかexpress.bodyParser()
?
ベストアンサー1
Express v4.16以降では追加のモジュールは必要なく、組み込みのJSONミドルウェア:
app.use(express.json())
このような:
const express = require('express')
app.use(express.json()) // <==== parse request body as JSON
app.listen(8080)
app.post('/test', (req, res) => {
res.json({requestBody: req.body}) // <==== req.body will be a parsed JSON object
})
注 -body-parser
これが依存する はすでに含まれていますエクスプレス付き。
ヘッダーも忘れずに送信してくださいContent-Type: application/json