ミドルウェア

初めに

以下、記事で実行するサンプルコードは以下の Git Hub で確認できます。

https://github.com/asakura-sakura/Express

ミドルウェアとは

Express.js では、アプリケーションにアクセスされた際に実行される関数である ミドルウェア関数 を作成することができます。ミドルウェア関数は、主に以下の目的で利用されます。 ミドルウェア関数は、主に以下の目的に利用できます。

  • リクエストの解析
  • レスポンスヘッダーの追加
  • 不正アクセスの禁止

ミドルウェアの使用方法

ミドルウェア関数を作成するには、ルーティング制御の時にも使用した app.use(path, handler) を使用します。

// /middleware/basic.js
const express = require("express");
const app = express();

app.use((req, res, next) => {
console.log("hello middleware");
next();
});

app.get("/middleware", (req, res) => {
res.send("hello world");
});

app.listen(3000);

ミドルウェアのルーティング

ミドルウェア関数は、パスによって実行するかどうかを制御することができます。ミドルウェア関数のルーティングは、app.use(path, handler) のように、app.use の第一引数に path を与えることで実現できます。


// /middleware/routing.js
const express = require("express");
const app = express();

app.use((req, res, next) => {
  console.log("hello middleware");
  next();
});

app.use("/routing", (req, res, next) => {
  console.log("routing middleware");
  next();
});

app.get("/middleware", (req, res) => {
  res.send("hello world");
});

app.get("/routing/middleware", (req, res) => {
  res.send("hello world");
});

app.listen(3000);

最後に

ミドルウェアを使用することで、ルーティング前に処理を実行することができます。例えば、異常なリクエストが来た場合に弾くことや、リクエストを成型しルーティング処理に渡すことができます。

ぜひ覚えておきましょう。