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