ミドルウェアを使いこなしてExpress.js アプリケーションを強化しよう

2024-04-02

Node.js / Express: app.use とは?

app.use は、以下の役割を担います。

  • ミドルウェアを登録する
  • ミドルウェアの実行順序を制御する
  • 特定のパスにのみミドルウェアを適用する

ミドルウェアには、さまざまな種類があります。

  • ルーティング:リクエストのパスに基づいて処理を分岐する
  • 認証:ユーザーの認証を行う
  • ロギング:リクエストとレスポンスのログを出力する
  • 静的ファイルの配信:HTML ファイルや画像ファイルなどの静的ファイルを配信する
  • エラー処理:エラーが発生した時の処理を行う
app.use(middleware);

middleware は、ミドルウェア関数を表す変数です。

例:ルーティングミドルウェア

以下の例は、/users パスへのリクエストを処理するルーティングミドルウェアです。

app.use("/users", (req, res, next) => {
  // `/users` パスへのリクエスト処理
  next();
});

例:認証ミドルウェア

以下の例は、ユーザーの認証を行う認証ミドルウェアです。

app.use((req, res, next) => {
  // ユーザー認証処理
  if (isAuthenticated) {
    next();
  } else {
    res.status(401).send("Unauthorized");
  }
});

app.use は、Express.js でミドルウェアを登録するために使用する関数です。ミドルウェアを使うことで、さまざまな機能をアプリケーションに追加することができます。




const express = require("express");

const app = express();

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.use("/users", (req, res, next) => {
  // `/users` パスへのリクエスト処理
  console.log("リクエストパス:", req.path);
  next();
});

app.get("/users/:id", (req, res) => {
  // `/users/:id` パスへのリクエスト処理
  console.log("ユーザーID:", req.params.id);
  res.send("ユーザー情報");
});

app.listen(3000);
const express = require("express");
const jwt = require("jsonwebtoken");

const app = express();

app.use((req, res, next) => {
  // ユーザー認証処理
  const token = req.headers["authorization"];
  if (!token) {
    return res.status(401).send("Unauthorized");
  }

  try {
    const decoded = jwt.verify(token, "secret");
    req.user = decoded;
    next();
  } catch (err) {
    return res.status(401).send("Unauthorized");
  }
});

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.get("/users/:id", (req, res) => {
  // 認証済みユーザーのみアクセス可能
  if (!req.user) {
    return res.status(401).send("Unauthorized");
  }

  // ユーザー情報取得処理
  res.send("ユーザー情報");
});

app.listen(3000);

エラー処理ミドルウェア

const express = require("express");

const app = express();

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.use((err, req, res, next) => {
  // エラー処理
  console.error(err.stack);
  res.status(500).send("エラーが発生しました");
});

app.listen(3000);

これらのサンプルコードは、app.use の使い方を理解するのに役立ちます。




app.use 以外の方法

app.get() や app.post() などのルーティング関数

ルーティング関数に直接ミドルウェア関数を渡すことができます。

app.get("/users", (req, res, next) => {
  // 認証ミドルウェア
  const authMiddleware = (req, res, next) => {
    // ユーザー認証処理
    if (!req.user) {
      return res.status(401).send("Unauthorized");
    }
    next();
  };

  authMiddleware(req, res, next);

  // `/users` パスへのリクエスト処理
  res.send("ユーザー情報");
});

app.all()

すべてのパスに適用されるミドルウェアを登録したい場合は、app.all() を使用できます。

app.all((req, res, next) => {
  // ログ出力ミドルウェア
  const loggerMiddleware = (req, res, next) => {
    console.log("リクエスト:", req.method, req.path);
    next();
  };

  loggerMiddleware(req, res, next);
});

サードパーティ製のミドルウェアライブラリ

express-middleware などのサードパーティ製のミドルウェアライブラリを使用することもできます。

const express = require("express");
const expressMiddleware = require("express-middleware");

const app = express();

app.use(expressMiddleware.cookieParser());
app.use(expressMiddleware.session());

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(3000);

これらの方法は、それぞれ異なる利点と欠点があります。状況に応じて適切な方法を選択する必要があります。


node.js express


Node.js + Express で HTTPS サーバーを構築し、SSL 証明書を設定する方法

このチュートリアルでは、Node. js と Express を使用して HTTPS サーバーを構築し、SSL 証明書を設定する方法を説明します。準備するものNode. js (インストール済み)ドメイン名 (必須ではないが、推奨)手順秘密鍵と証明書を作成する OpenSSL を使用して、秘密鍵と自己署名証明書を作成します。以下のコマンドを実行します。...


Node.js でディレクトリを探索する:ワイルドカードマッチングの応用例

まず、glob モジュールをインストールします。次に、以下のコードでファイルを検索できます。このコードは、path/to/files ディレクトリ内のすべての . txt ファイルを検索します。ワイルドカードを使用して、より複雑な検索を実行することもできます。...


解決策1: PATH環境変数にGulpのインストールディレクトリを追加する

このエラーは、Gulpをインストールした後、コマンドプロンプトで gulp と入力しても実行できない場合によく発生します。これは、いくつかの原因が考えられます。原因考えられる原因は以下の通りです。Node. jsがインストールされていないGulpがグローバルにインストールされていない...


AWS Lambda で Node.js の古いバージョンを実行する方法

nvm を使うnvm は Node. js のバージョン管理ツールです。nvm を使うと、複数のバージョンの Node. js をインストールして、簡単に切り替えることができます。手順nvm をインストールします。nvm を使って、ダウングレードしたい Node...


Gatsbyで発生する「digital envelope routines::unsupported ... ERR_OSSL_EVP_UNSUPPORTED」エラーの原因と解決策

このエラーは、Node. js 17. 0.1 と Gatsby を一緒に使用する場合に発生することがあります。これは、Gatsby のツールが古い暗号化アルゴリズムまたは鍵サイズを使用しており、OpenSSL 3.0 でデフォルトで無効化されていることが原因です。...


SQL SQL SQL SQL Amazon で見る



app.use関数:ミドルウェアを登録するための必須ツール

Express. jsは、Node. js用の軽量で柔軟なWebフレームワークです。その中核となるのがミドルウェアと呼ばれる機能です。ミドルウェアは、リクエストとレスポンスの処理フローに介入し、様々な処理を挿入できる仕組みです。本記事では、ミドルウェアとapp


Express.js で始める REST API 開発: app.use と app.get の実践例

app. use と app. get は、Express. js でルーティングを定義するために使用されるメソッドです。 どちらも異なる目的を持ち、異なる方法で使用されます。app. useミドルウェアを登録するために使用されます。ミドルウェアは、リクエスト処理の前後に実行される関数です。