node.js GET POSTパラメーターを取得する

Javascript

node.js GET POSTパラメーターを取得する

node.jsでGET、POSTのパラメーターを取得する方法です。
下記のサイトのコピーではありますが(ありがとうございます。)

http://snippets.dzone.com/posts/show/13311

 var sys = require ('sys'),
 url = require('url'),
 http = require('http'),
 qs = require('querystring');
 
 http.createServer(function (req, res) {
    
     if(req.method=='POST') {
            var body='';
            req.on('data', function (data) {
                body +=data;
            });
            req.on('end',function(){
                
                var POST =  qs.parse(body);
                console.log(POST);
            });
    }
    else if(req.method=='GET') {
        var url_parts = url.parse(req.url,true);
        console.log(url_parts.query);
    }
    
 
 }).listen(1337, "127.0.0.1");

です。

たとえば、弊社のWebサーバーだとして

http://onlineconsultant.tv:1337/?hogehoge=test

とやると、GETはコンソールに

 { hogehoge: 'test' }

と表示されます。

  • bbb — aaa {2015-10-31 (土) 22:35:20}
  • b2 — a1 {2015-10-31 (土) 22:35:44}

nod.js socket.write完了後にsocket.destroyしてはいけない

Javascript

node.jsのnet.socketを利用したソケット通信プログラムで通信エラーが多発してしまいました。

socket.write()の完了時コールバックでsocket.destroy()していたのですが、これだと受信に失敗することがありました。socket.end()を呼べば、通信先にFINを送信するので、正常に通信切断できるようになりました。

 socket.write("送信データ");
 socket.end();

とするか、送信データが1つだけなら

 socket.end("送信データ");

となります。

node.js TypeError

Javascript
node.js

node.js TypeError: first argument must be a string or Buffer

かなりメモ的な話なのですが、node.jsをアップグレードしたらこのようなエラーが出るようになりました。

 response.write(JSON.parse(JSON.stringify(data)));  

としていたところを

 response.write(JSON.stringify(data));  

としたら治りました!

node.js

node.js インストール

node.jsとは

Google V8ベースのイベントI/O Webアプリケーションフレームワークです。
リアルタイムでハイパフォーマンスなWebアプリケーション開発に向いています。
サーバーサイド・クライアントサイドでJavascriptを動作させることができます。

node.js関連の記事

node.js 本家サイト

node.js Hello Worldを表示させる

Javascript

node.js Hello Worldを表示させる

node.js version 0.2.2

node.js インストール]]で[[node.jsをWebサーバーにインストールし終わったら、次はHello Worldを表示させてみます。

次のようなスクリプトを書いて、example.jsという名前でWebサーバーに保存します。
内容は、8124番のポートでこのWebサーバーに接続すると、「Hello World」が表示される、というものです。

 var http = require('http');
 
 http.createServer(function (request, response) {
   response.writeHead(200, {'Content-Type': 'text/plain'});
   response.end('Hello World\n');
 }).listen(8124);
  
 console.log('Server running at http://127.0.0.1:8124/');

サーバー上で、このexample.jsをnodeというコマンドで実行します。

 # node example.js
 Server running at http://127.0.0.1:8124/

と表示されたでしょうか?
されていれば、動作しています。

これで、このWebサーバーのどこに接続しても、ポート番号8124で接続すれば、「Hello World」と表示されるかと思います。

 http://Webサーバーのアドレス:8124/以下任意のパス

Webシステム開発のご依頼はこちら