はじめに
皆さん。こんにちは! DreamHanksのエルムです。
今回はNode.js Webサーバについて説明していきます。
前回の記事は[第4回] Node.jsのExportモジュールです。
ここでは、シンプルなNode.jsのWebサーバを作成し、HTTPリクエストを処理する方法を学びます。
任意のWebアプリケーションのWebページにアクセスするには、Webサーバーが必要です。例えば、IISはASP.NETウェブアプリケーション用のウェブサーバーであり、ApacheはPHPやJavaウェブアプリケーション用のウェブサーバーです。
Node.jsには、HTTPリクエストを非同期に処理する独自のWebサーバを作成する機能があります。Node.jsのWebアプリケーションを実行するには、IISやApacheを使用することもできますが、Node.jsのWebサーバーを使用することをお勧めします。
Node.jsのWebサーバを作成する方法
Node.jsを使えば、受信したリクエストを非同期に処理するシンプルなWebサーバを簡単に作ることができます。
次の例は、server.jsファイルに含まれるシンプルなNode.jsのWebサーバーです。
server.js:
1 2 3 4 5 6 7 8 9 10 11 |
var http = require('http'); // 1 - Node.jsコアモジュールのインポート var server = http.createServer(function (req, res) { // 2 - サーバー作成 }); server.listen(5000); //3 - リクエストを聞く console.log('5000ポートのNode.jsウェブサーバが稼働しています..') |
上の例では、require()関数を使ってhttpモジュールをインポートしています。httpモジュールは、Node.jsのコアモジュールなので、NPMを使ってインストールする必要はありません。次のステップでは、httpのcreateServer()メソッドを呼び出し、リクエストとレスポンスのパラメータでコールバック関数を指定します。ここでは、任意の未使用のポートを指定できます。
コマンドプロンプトまたはターミナルウィンドウでnode server.jsコマンドを記述して上記のWebサーバーを実行すると、以下のようなメッセージが表示されます。
1 2 |
C:\> node server.js 5000ポートのNode.jsウェブサーバが稼働しています.. |
以上、簡単な手順でNode.jsのWebサーバを作成する方法をご紹介しました。それでは、Node.jsのWebサーバでHTTPリクエストを処理し、レスポンスを送信する方法を見ていきましょう。
HTTPリクエストを処理する方法
http.createServer()メソッドには、Node.jsから供給されるrequestとresponseのパラメータが含まれています。リクエストオブジェクトは、現在のHTTPリクエストに関する情報(URL、リクエストヘッダー、データなど)を取得するために使用します。レスポンスオブジェクトは、現在のHTTPリクエストに対するレスポンスを送信するために使用できます。
次の例は、Node.jsでHTTPリクエストとレスポンスを処理することを示しています。
server.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
var http = require('http'); // Node.jsコアモジュールのインポート var server = http.createServer(function (req, res) { //ウェブサーバーの作成 if (req.url == '/') { //現在のリクエストのURLを確認 // レスポンスヘッダの設定 res.writeHead(200, { 'Content-Type': 'text/html' }); // レスポンスコンテンツの設定 res.write('<html><body><p>こちらはホームページです。</p></body></html>'); res.end(); } else if (req.url == "/student") { res.writeHead(200, { 'Content-Type': 'text/html' }); res.write('<html><body><p>これは、学生のページです。</p></body></html>'); res.end(); } else if (req.url == "/admin") { res.writeHead(200, { 'Content-Type': 'text/html' }); res.write('<html><body><p>こちらは管理者ページです。</p></body></html>'); res.end(); } else res.end('Invalid Request!'); }); server.listen(5000); //6 - 入力されたリクエストを聞く console.log('5000ポートのNode.jsウェブサーバが稼働しています..') |
上記の例では、req.urlを使って現在のリクエストのURLを確認し、それに基づいてレスポンスを送信しています。レスポンスを送信するには、まずwriteHead()メソッドでレスポンスヘッダーを設定し、次にwrite()メソッドでレスポンスボディとして文字列を記述します。最後に、Node.jsのWebサーバはend()メソッドを使ってレスポンスを送信します。
上記のWebサーバーを以下のように実行します:
1 2 |
C:\> node server.js 5000ポートのNode.jsウェブサーバが稼働しています.. |
ブラウザで http://localhost:5000 にアクセスすると、次のような結果が表示されます。
同じように、ブラウザをhttp://localhost:5000/student に向けると、次のような結果が表示されます。
JSONレスポンスの送信する方法
次の例は、Node.jsのWebサーバーからJSONレスポンスを提供する方法を示しています。
server.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var http = require('http'); var server = http.createServer(function (req, res) { if (req.url == '/data') { //現在のリクエストのURLを確認 res.writeHead(200, { 'Content-Type': 'application/json' }); res.write(JSON.stringify({ message: "Hello DreamHanks"})); res.end(); } }); server.listen(5000); console.log('5000ポートのNode.jsウェブサーバが稼働しています..') |
このようにして、異なるレスポンスを提供するシンプルなウェブサーバーを作ることができます。
終わりに
今回の記事は以上になります。
ご覧いただきありがとうございます。
コメント