ルーティングとは
どのアドレスにアクセスしたら、どのような内容を表示するか
といったことを定義するための仕組みです。
例えば、クライアントが ”/” にアクセスしたらAを返す。
クライアントが "other" にアクセスしたらBを返すといったことです。
JavaScript では「URL」というオブジェクトを使用したら簡単にサンプルを作れます。
まず、サンプルを記載します。
作成するのは以下の3ファイル。
- sample.js
- index.html
- other.html
今回、html ソースは割愛します。
- sample.js
const http = require("http"); const fs = require("fs"); const url = require("url"); var server = http.createServer(switchProcess); server.listen("ここにポート番号を記載"); console.log("Server Start!"); // createServer の処理 function switchProcess(request, response){ var url_parts = url.parse(request.url); switch(url_parts.pathname){ case "/": fs.readFile("./HTML/index.html", "UTF-8", (error, data) => { response.writeHead(200, {"Content-Type" : "text/html"}); response.write(data); response.end(); }); break; case "/other": fs.readFile("./HTML/other.html", "UTF-8", (error, data) => { response.writeHead(200, {"Content-Type" : "text/html"}); response.write(data); response.end(); }); break; default: response.writeHead(200, {"Content-Type": "text/plain"}); response.end("no page..."); break; } }
内容について見ていきましょう。
まず、以下の処理でドメイン以下のパス部分の値をチェックします。
var url_parts = url.parse(request.url);
次に、取得したドメイン以下のパスを利用して分岐します。
switch(url_parts.pathname){ case "/": // "/"にアクセスした場合の処理 break; case "/other": // "/other"にアクセスしたときの処理 break; default: // 上記以外にアクセスした場合の処理 break; }
switch内のcaseはいくつでも増やすことができます。
このような感じで簡単にルーティングができます。