「がんばれない」けど「がんばりたい」

ITエンジニアの仕事のこと。AI、機械学習、ディープラーニング。地頭力。車のこと。

クライアントからのデータ取得|node.js

■URLに付加されたパラメータを解析する。


◆URLモジュール

url.parse(urlStr, [parseQueryString], [splashesDenoteHost])

get時。自分的には下の様な使い方がデフォルトになるかな。

var http = require('http');
var url = require('url');
var server = http.createServer();

server.on('request', function(request, response) {
        var urlElements = url.parse(request.url, true);
        var q = urlElements.query;

        console.log(q);
});

server.listen(8080, '127.0.0.1');

◆POST #1|フォームに入力された情報送信

postの場合、dataイベントが発生しデータ受信が終了するとendイベントが発生する。 また接続が閉じられるとcloseイベントが発生する。

var http = require('http');
var querystring = require('querystring');
var server = http.createServer();

server.on('request', function(request, response) {

        if (request.method == 'POST') {

                var data = '';
                request.on('data', function(chunk) {
                        data += chunk;
                }

                request.on('end', function() {
                        //終了処理
                        console.log('終了処理');

                       //queryオブジェクトにフォーム送信データを格納する
                       var query = querystring.parse(data);
                }
        }
});

server.listen(8080, '127.0.0.1');

◆POST #2|multipart/form-data

・formidableモジュールを使って行う

> npm install formidable
var formidable = require('formmidable');
var http = require('http');

var server = createServer(onRequest);

server.on ('request', function(request, response) {

  if (request.method == 'POST') {
    // formidable objectを作成する
    var from = new formidable.IncomingForm();

    // 取得したデータをパース
    form.parse(request, function( err, fields, files) {
      // fieldsオブジェクトにはフォーム値が、filesオブジェクトには
      // アップロードしたファイル情報が入る

    });
  }
});