LoginSignup
0
0

More than 5 years have passed since last update.

動的処理可能な開発用のローカルhttpサーバー

Posted at

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();
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0