普段、Webサーバのテストを行うときはPythonのSimpleHTTPServerをよく使うのですがNode.jsでWebサーバが動けばそれで代用できるんじゃないかと思って調べた。
そしたら、やっぱりあるのね。
JavaScriptは次のように書いて、Node.jsで実行するとlocalhostの8080番ポートがlistenになるのでWebブラウザからhttp://localhost:8080/
にアクセスするとよい。
// httpモジュールを読み込み、インスタンスを生成
var http = require('http');
var fs = require('fs');
var server = http.createServer();
server.on('request', function(req, res) {
res.writeHead(404, {'Content-Type' : 'text/plain'});
res.write(req.url);
res.end();
});
server.listen(8080, "127.0.0.1");
URLでファイルを表示する場合は次のように書く。
// httpモジュールを読み込み、インスタンスを生成
var http = require('http');
var fs = require('fs');
var server = http.createServer();
server.on('request', function(req, res) {
// ファイルを読み込むときはcallbackにする
fs.readFile(__dirname + req.url, 'utf-8', function (err, data) {
// エラー発生時
if (err) {
res.writeHead(404, {'Content-Type' : 'text/plain'});
res.write('page not found');
return res.end();
}
res.writeHead(200, {'Content-Type' : 'text/html'});
res.write(data);
res.end();
});
});
server.listen(8080, "127.0.0.1");
これでhttp://localhost:8080/hello.html
とかでアクセスすると、Node.jsを実行したディレクトリのhello.htmlを表示する。