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}

node.js

node.js インストール

node.jsとは

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

node.js関連の記事

node.js 本家サイト

node js 最新版にアップデートする

Javascript

node.js 最新版にアップデートする

node.js アップデートで書いた通りに

 git checkout v0.10

でnode.jsを最新版にしようとすると、できません。

 error: pathspec '0.10' did not match any file(s) known to git.
 Did you forget to 'git add'?

となってしまいます。

違う何かが悪いのかもしれませんが…

しかし、もっと簡単なやり方があったので、ご紹介します!

 $npm install n -g

そのあと、 

 $n 0.10

無事最新版がインストールできました!(^_^)

node command not found

Linuxサーバー

node command not found

種を明かすとバカバカしい話なのですが、また同じことをするかもしれないので、書いておきます。

sudoでルート化して、

 # node

とすると

 -bash: node: command not found

となってしまいました。

あれれ?nodeってインストールされてなかったっけ?
と思い、インストールされているか調べたりしていましたが、su – で本当の管理者権限でnodeを動作させたら動作できました。

 /root/node

においてあったので、sudoじゃダメだった、ということですね(^_^;

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("送信データ");

となります。