ExpressアプリケーションでJSON POSTデータを使用するにはどうすればいいですか?質問する

ExpressアプリケーションでJSON POSTデータを使用するにはどうすればいいですか?質問する

次の JSON 文字列をサーバーに送信しています。

(
        {
        id = 1;
        name = foo;
    },
        {
        id = 2;
        name = bar;
    }
)

サーバー上にこれがあります。

app.post('/', function(request, response) {

    console.log("Got response: " + response.statusCode);

    response.on('data', function(chunk) {
        queryResponse+=chunk;
        console.log('data');
    });

    response.on('end', function(){
        console.log('end');
    });
});

文字列を送信すると、200 応答が返されたことが示されますが、他の 2 つのメソッドは実行されません。なぜでしょうか?

ベストアンサー1

responseオブジェクトの使用と の使用を混同していると思いますrequest

オブジェクトresponseはHTTPレスポンスを呼び出しクライアントに返すためのものですが、ここでは の本体にアクセスしたいと考えていますrequest。こちらを参照してください。答えこれはいくつかのガイダンスを提供します。

有効なJSONを使用していて、それをPOSTしている場合はContent-Type: application/jsonbodyParserリクエスト本文を解析し、結果をrequest.bodyルートに配置するミドルウェア。

Express 4.16+ のアップデート

リリース4.16.0から、新しいexpress.json()ミドルウェアが利用可能です。

var express = require('express');

var app = express();

app.use(express.json());

app.post('/', function(request, response){
  console.log(request.body);      // your JSON
   response.send(request.body);    // echo the result back
});

app.listen(3000);

Express 4.0 - 4.15 に更新されました

ボディパーサーはv4以降、独自のnpmパッケージに分割され、別途インストールが必要です。npm install body-parser

var express = require('express')
  , bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());

app.post('/', function(request, response){
  console.log(request.body);      // your JSON
   response.send(request.body);    // echo the result back
});

app.listen(3000);

Expressの以前のバージョン(< 4)の場合

var express = require('express')
  , app = express.createServer();

app.use(express.bodyParser());

app.post('/', function(request, response){
  console.log(request.body);      // your JSON
  response.send(request.body);    // echo the result back
});

app.listen(3000);

次のようにテストします。

$ curl -d '{"MyKey":"My Value"}' -H "Content-Type: application/json" http://127.0.0.1:3000/
{"MyKey":"My Value"}

おすすめ記事