Node.jsでjsonを返すmockの作成

clientサイドでゲームを作る時に、
簡単にjsonレスポンスを返すmockが欲しかったので、nodeのhttpを使って実装してみた。
単純に入力されたパスによって返すjsonファイルを入れ替えるだけのサンプル。
setTimeoutなどを入れたり、応答時間のテストなど、ほかにもmockとして機能を入れれば使えそう。

sample

/*
http://localhost:3000/load_data_001〜002.json
で接続するとdata001〜002のjsonを返すサンプル。
実行>node game_json_mock.js 3000
*/
var http = require("http"),
    url = require("url"),
    path = require("path"),
    port = process.argv[2] || 8888;
var data001 = '{"players":[{"id": 1,"name": "hogehoge","hp":170,},{"id": 2,"name2": "hogehoge2","hp":270,}]}';
var data002 = '{"players":[{"id": 1,"name": "hogehoge","hp":170,},{"id": 2,"name2": "hogehoge2","hp":270,}]}';
var save001 = '{"status":success}';
http.createServer(function(request, response) {
    var Response = {
        "LoadData001":function(file, filename){
            response.writeHead(200,{'Content-Type':'application/json;charset=utf-8'});
            response.end(data001);
        },
        "LoadData002":function(file, filename){
            response.writeHead(200,{'Content-Type':'application/json;charset=utf-8'});
            response.end(data002);
        },
        "SaveData":function(file, filename){
            response.writeHead(200,{'Content-Type':'application/json;charset=utf-8'});
            response.end(save001);
        },
        "404":function(){
            response.writeHead(404, {"Content-Type": "text/plain"});
            response.write("404 Not Found\n");
            response.end();
        }
    }
    var uri = url.parse(request.url).pathname
    , filename = path.join(process.cwd(), uri);
    if(uri == "/load_data_001.json"){
        Response["LoadData001"](); return;
    }else if(uri == "/load_data_001.json"){
        Response["LoadData002"](); return;
    }else if(uri == "/save.json"){
        Response["SaveData"](); return;
    }else{
        Response["404"](); return;
    }
}).listen(parseInt(port, 10));
console.log("Server running at http://localhost:" + port );
setTimeOutを入れたりすると、応答が遅いときの挙動などclientで試せる
/*
setTimeout(function() {
    res.setHeader('Content-Type', 'text/plain');
    res.writeHead(200);
    res.write('200 - OK.');
    res.end();
  }, 300 * 1000);
*/


(参考)Node.jsによる必要最小限のhttpサーバとhttpsサーバとhttp proxyサーバ
http://qiita.com/LightSpeedC/items/3cae342fd7e79a21869f

Node.jsのhttp.request関数/http.get関数とタイムアウト
http://hylom.net/node-http-request-get-and-timeout