サーバーは、さまざまな URL またはリクエストに基づいてさまざまな操作を実行する必要があります。このステップはルーティングを通じて実装できます。
最初のステップでは、リクエスト URL のパスを解析する必要があり、url モジュールを導入します。
ブラウザによって要求された URL パスを見つけるために、onRequest() 関数にロジックを追加しましょう。
var http = require("http"); var url = require("url"); function start() { function onRequest(request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); } exports.start = start;好了,pathname就是请求的路径,我们可以用它来区别不同请求了,这样一来我们就可以对来自/start和/upload的请求使用不同的代码来处理。
次に、ルートを記述して、router js ファイルというルーターを作成しましょう。
function route(pathname) { console.log("About to route a request for " + pathname); } exports.route = route;
このコードでは、まずルーティングとサーバーを統合しましょう。
次に、サーバーの start() 関数を拡張し、start() でルーティング関数を実行し、パス名をパラメータとして渡します。
var http = require("http"); var url = require("url"); function start(route) { function onRequest(request, response) { var pathname = url.parse(request.url).pathname; console.log("Request for " + pathname + " received."); route(pathname); response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Server has started."); } exports.start = start;
同時に、ルーティング関数をサーバーに挿入できるように、index.js を拡張します。
var server = require("./server"); var router = require("./router"); server.start(router.route);
index.js を実行し、任意のパスにアクセスします。 /upload など、コンソール出力「About to Route a request for /upload.
」が表示されます。これは、HTTP サーバーとリクエスト ルーティング モジュールがすでに相互に通信できることを意味します。
上記はこの章の全内容です。その他の関連チュートリアルについては、Node.js ビデオ チュートリアル をご覧ください。