コース一覧
    Node.jsバックエンド実践
    ミドルウェア

    Node.jsバックエンド実践

    入力検証、ミドルウェア、エラー処理、データベース接続を学び、実用的なバックエンドAPIを安全に組み立てられるようにします。

    1
    リクエスト処理と検証
    01. クエリパラメータ15分
    02. 並び替えとページング15分
    03. 入力検証15分
    04. ミドルウェア15分
    05. エラーハンドリング15分
    06. つくる:検索API完成20分
    07. 第5章クイズ10分
    2
    データベース接続
    01. DBにつなぐ15分
    02. 一覧・詳細をDB化15分
    03. 出品をDB化15分
    04. SQLインジェクション20分
    05. 更新・削除をDB化15分
    06. 購入トランザクション20分
    07. つくる:DB版fleama20分
    08. 第6章クイズ10分

    ミドルウェア

    全部のルートに同じことを書きたくない

    第4章のつくる回で、5 つのルートが同じ骨格をしていることに気付きました。同じことは、ルートをまたいでも起こります。

    届いたリクエストを記録したい。ログインしているか確かめたい。どれも全部のルートで同じ処理が要ります。5 か所にコピーすると、直すときも 5 か所です。

    ミドルウェアは、その共通処理を手前にまとめて置く仕組みです。

    リクエストが通る道

    プレーンテキスト

    リクエスト → ミドルウェア → ミドルウェア → ルート → 応答

    リクエストはルートに届く前に、登録されたミドルウェアを順に通ります。実は express.json() もミドルウェアでした。本文を読める形に直してからルートへ渡す、という共通処理です。

    書き方

    JavaScript

    app.use((req, res, next) => {
      console.log(req.method + " " + req.path);
      next();
    });

    app.use で登録します。引数が 3 つあるのがミドルウェアの目印です。

    req と res はルートと同じですが、next が増えています。

    next を呼ばないと止まる

    next() は「次へ進んでよい」という合図です。

    JavaScript

    app.use((req, res, next) => {
      console.log("届きました");
      // next() を呼ばない
    });

    こう書くと、リクエストはここで止まったまま応答が返りません。ブラウザは待ち続けます。呼び忘れると固まるので、書いたら必ず確かめてください。

    逆に、わざと止めるのが正しい場面もあります。第7章の認証では、トークンが無ければ next() を呼ばずに 401 を返して打ち切ります。

    登録の順番が実行の順番

    ミドルウェアは書いた順に通ります。ですから app.use は、ルートより前に書きます。

    JavaScript

    app.use(express.json());   // 先に本文を読めるようにして
    app.post("/items", ...);   // それからルート

    逆に書くと、ルートに届く時点ではまだ本文が読めません。第4章で express.json() を上のほうに書いていたのは、このためです。

    手を動かす

    演習では、リクエストを数えるミドルウェアを自作します。next の役割を、自分の手で確かめてください。

    要件

    1. app.use でミドルウェアを登録し、log に メソッド パス の形で足す
    2. 足したあと next() を呼んで次へ進める
    3. ミドルウェアはルートより前に登録する

    ヒント

    `app.use((req, res, next) => { ... })` を、ルートより前に書きます

    記録する文字列は `req.method + " " + req.path` で作れます

    最後に `next()` を呼びます。忘れると応答が返らずに止まります

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/10

    関連レッスン

    • エラーハンドリング

      共通エラー処理で500を整形し、落ちないAPIにできるようになります。

    • つくる:検索API完成

      検索と検証を備え、フリマらしい絞り込みを完成できるようになります。

    • 第5章クイズ

      リクエスト処理と検証の理解を4択で確認します。

    • DBにつなぐ

      接続して1行取り出すところまで確かめ、NodeからSQLを発行できるようになります。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • リクエストWeb 通信の基本単位、ブラウザの問い合わせとサーバーの返答
    • 処理計算や代入を表す長方形
    • ミドルウェアリクエストとレスポンスの間に挟まる処理関数。
    • 引数位置引数=順番で渡す。
    • ブラウザユーザーから見たWebのクライアント
    • 認証「この人は本当に本人?」のチェック
    • トークンLLM が扱う最小の文字単位
    main.js
    エディタを読み込んでいます

    メモ

    ミドルウェア

    ⌘S で保存