LoginSignup
2
3

More than 5 years have passed since last update.

Node Expressフレームワークの最小RESTサービスへcurlでパラメータを渡す検証

Last updated at Posted at 2017-08-15

Node.js の Expressフレームワークを利用して、最小のRESTサーバーを書いて、curl でデータの受け渡しを確認した。

検証に利用したプログラムの解説

nodejs
     1  #!/usr/bin/env node
     2  
     3  var express = require('express');
     4  var app = express();
     5  var debug = require('debug')('app');
     6  var port = parseInt(process.env.PORT || '3000');
     7  
     8  var bodyParser = require('body-parser');
     9  app.use(bodyParser.json());
    10  app.use(bodyParser.urlencoded({ extended: false }));
    11  
    12  // 動作確認用
    13  app.get('/', function(req, res) {
    14      res.send('hello world');
    15  });
    16  
    17  // POST application/x-www-form-urlencoded で受け取るケース
    18  app.post('/param', function(req, res) {
    19      console.log("body = ", req.body);
    20      console.log("name = ", req.body.name);
    21      console.log("year = ", req.body.year);
    22      res.send('OK');
    23  });
    24  
    25  // テキスト形式のJSONで受け取るケース
    26  app.post('/json', function(req, res) {
    27      console.log("body = ", req.body);
    28      json = JSON.parse(req.body.json);
    29      console.log("name = ", json.name);
    30      console.log("year = ",  json.year);
    31      res.send('OK');
    32  });
    33  
    34  // イベント待機 
    35  app.listen(port);

3〜6行目

Expressフレームワークの初期化、ポート番号の取得

8〜10行目

POSTのデータをパースするためのミドルウェア設定です。 コンテントタイプ application/x-www-form-urlencoded のデータをパースして、結果をreqへセットする。

12〜14行目

HTTP GET / にアクセスがあると、コールバックするコードで、応答は'hello world'を返す。

17〜23行目

HTTP POST /param にアクセスがあると、コールバックするコードで、ミドルウェアによりパースされたPOSTデータが、reqへセットされてくる。 POSTデータに、nameやyearの値があれば表示する。

Curlリクエストの方法は、下記の「application/x-www-form-urlencodedで受け取るケース」を参照してください。

25〜32行目

HTTP POST /json にアクセスがあると、コールバックするコードで、前述の/paramと同様に動作する。 この部分では、POSTされたJSONのテキスト形式をデータをパースして、取り込みます。クライアントのプログラムで持っている変数データを、一括でテキストのJSON形式変換できるので、便利な受け渡し方法です。

Curlのリクセスは、下記の「テキスト形式のJSONで受け取るケース」を参照してください。

34〜35行目

サーバーの実行、イベント待機

GETでの動作確認

$ curl http://localhost:3000/
hello world

application/x-www-form-urlencodedで受け取るケース

リクエスト

$ curl http://localhost:3000/param -d "name=Maho Takara" -d "year=2017"  -X POST
OK

サーバー側の実行結果

$ node app.js
body =  { name: 'Maho Takara', year: '2017' }
name =  Maho Takara
year =  2017

テキスト形式のJSONで受け取るケース

リクエスト

curl http://localhost:3000/json -d 'json={"name": "Maho Takara", "year": "2017"}'  -X POST
OK

サーバー側の実行結果

$ node app.js
body =  { json: '{"name": "Maho Takara", "year": "2017"}' }
name =  Maho Takara
year =  2017
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3