バックエンド開発

【Node.js】アクセスされたURLの取得と処理の振り分け

【Node.js】アクセスされたURLの取得と処理の振り分け

目次

  1. URLの取得
  2. URLによって処理を振り分ける
  3. まとめ

今回はリクエストがあった際に、アクセスされた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に応じて、柔軟に処理を返すことができます。

簡単ですが、重要な内容なので、覚えておきたいところです。

それでは今回はここまで!

お疲れ様でした!

関連記事

関連記事