Nodejsで立てられる簡易的なローカル用サーバーは色々ありますが、クエリーやポストの内容で少し違ったレスポンスを返したい時ないですか?そういうのができるのが見つからなかったのでかなりやっつけですが作りました(やっつけなんでもっといいのあったら教えてください)。
アクセスしたパスにファイルがない場合.js
を付与してrequireし実行します。
例えばhttp://localhost:8888/foo.html
で動的に処理したい場合、foo.html
を作らずに代わりにfoo.html.js
を作ってそこで処理する関数をエキスポートしてやればOKです。関数の引数はfunction(request, response)
です。
例えば下記は、react+Ajaxでページネーションを実装するときに使ったページの一部です。
var url = require("url");
module.exports = function(request, response){
var requestUrl = url.parse(request.url, true);
var page = parseInt(requestUrl.query.page, 10)
var resp = {
items: [
{
id: 1234
...
}
...
],
paging: {
"page": page,
"pageCount": 10,
"hasNext": page < 10,
"hasPrev": page > 1,
"perPage": 20
}
}
//Fixed ID not to be duplicated.
for (var index = 0; index < resp.items.length; index++) {
var element = resp.items[index];
element.id = page.toString() + element.id
resp.items[index] = element
}
response.write(JSON.stringify(resp));
response.end();
}