Node.jsでhttpサーバー - JavaScript
Node.jsでhttpサーバーを秒で建てる
前提として、Node.jsがインストール済みであるとします。
では、速攻でhttpサーバーを構築します。
まず、ファイルapp.js
を作成します。
$ touch app.js
ファイルを編集します。
次のようにします。
1 const http = require('http'); 2 3 const hostname = '127.0.0.1'; 4 const port = 3000; 5 6 const server = http.createServer((req, res) => { 7 res.statusCode = 200; 8 res.setHeader('Content-Type', 'text/plain'); 9 res.end('Hello ' + name + '!'); 10 }); 11 12 server.listen(port, hostname, () => { 13 console.log(`Server running at http://${hostname}:${port}/`); 14 });
node
コマンドで実行します。
$ node app.js
これで、localhostの3000番ポートでサーバーがリッスンしています。
ブラウザのURL欄にhttp://localhost:3000
と入れてアクセスします。
ブラウザにHello world!と表示されました。
GETパラメータを処理する。
上で建てたhttpサーバーをカスタマイズしていきます。
まずは、パラメータを処理できるようにします。
現時点で、GETメソッドで、http://localhost:3000
にアクセスすると、Hello world!と表示されます。
これにGETパラメータを付与し、Hello {name}!と表示するように変更します。
今回、サーバーを建てるのにhttpモジュールを使っています。
このモジュールでは、req.url
でリクエストのURLを取得できます。
これをurlモジュールというモジュールで解析して、パスとパラメータに分けることができます。
パラメータとしてnameを渡します。
このパラメータが渡されなかった場合は、name=worldとします。
変更後のコードは以下のようになります。
1 const http = require('http'); 2 const url = require('url'); 3 4 const hostname = '127.0.0.1'; 5 const port = 3000; 6 7 const server = http.createServer((req, res) => { 8 var url_parse = url.parse(req.url, true); 9 var name = url_parse.query['name'] || 'world'; 10 res.statusCode = 200; 11 res.setHeader('Content-Type', 'text/plain'); 12 res.end('Hello ' + name + '!'); 13 }); 14 15 server.listen(port, hostname, () => { 16 console.log(`Server running at http://${hostname}:${port}/`); 17 });
変更点は2行目、8行目、9行目、12行目です。
再び、ブラウザからアクセスしてみます。
まず、http://localhost:3000
にアクセスすると、Hello world!と表示されます。
次に、http://localhost:3000?name=Ken
にアクセスすると、Hello Ken!と表示されます。
終わり