【Node.js】アクセスされたURLの取得と処理の振り分け
目次
今回はリクエストがあった際に、アクセスされたURLを取得する方法と、そのURLによって、処理を振り分ける方法をご紹介したいと思います。
このような振り分けはよく使われる処理ですが、そこまで難しい内容ではないので、是非ご覧ください。
データは前回に引き続き、下記記事と同じデータを使います。
https://www.dailyupblog.com/backend_development/936/
それでは早速いきましょう。
URLの取得
まず、アクセスされたURLを取得します。
下記例を用意いたしました。
「node-test」フォルダ内のserver.js中に下記のように記述してください。
const http = require("http");
const settings = require("./settings.js");
const server = http.createServer();
server.on("request", function (req, res) {
res.writeHead(200, { "Content-Type": "text/plain" });
res.write(req.url);
res.end();
});
server.listen(settings.port, settings.host);
console.log("server listen...");
これでserver.jsを起動して、「http://127.0.0.1:8080」でブラウザにアクセスすると、「/」が表示されると思います。
例えば、「http://127.0.0.1:8080/about」でアクセスすると、画面に「/about」と表示されるはずです。
上記コードのように、アクセスしてきたURLを取得するのは以下の記述で可能です。
req.url
URLによって処理を振り分ける
さて、URLを取得する方法をご紹介しましたが、次はアクセスしてきたURLによって、処理を振り分ける方法です。
基本的にはreq.urlを判別して、switch文で振り分けるのが手っ取り早いです。
server.jsに下記のように記述してください。
const http = require("http");
const settings = require("./settings.js");
const server = http.createServer();
let msg;
server.on("request", function (req, res) {
switch (req.url) {
case "/about":
msg = "about page now";
break;
case "/detail":
msg = "detail page now";
break;
default:
msg = "not found";
break;
}
res.writeHead(200, { "Content-Type": "text/plain" });
res.write(msg);
res.end();
});
server.listen(settings.port, settings.host);
console.log("server listen...");
上記のように、switch文を用いて、Headに書き込むメッセージの内容を振り分けました。
こうすることで簡単に処理を振り分けることができます。
これで実行してみると、「http://127.0.0.1:8080/about」にアクセスすると「about page now」と表示されますが、「http://127.0.0.1:8080/index」などでアクセスすると、「not found」になります。
非常に簡単ですね。
まとめ
いかがだったでしょうか。
今回は、アクセスしてきたURLの取得と、振り分け方法についてご紹介しました。
このようにNode.jsではURLによって処理を振り分けることが可能で、クライアントからリクエストされてきたURLに応じて、柔軟に処理を返すことができます。
簡単ですが、重要な内容なので、覚えておきたいところです。
それでは今回はここまで!
お疲れ様でした!