ミドルウェアの作成と活用する方法
NestJSでのミドルウェアの作成と活用について学びましょう。
概要
NestJSでは、ミドルウェアはリクエストとレスポンスの間で動作し、特定の処理を行うための関数です。ミドルウェアは、リクエストの解析、レスポンスヘッダーの追加、不正アクセスの禁止など、様々な目的で使用されます。この記事では、NestJSでミドルウェアを作成し、それを活用する方法を具体的なコード例とともに解説します。
nest.js v10.1.7
nodejs v19.7.0
また、今回作成するコードは全て、GitHubに掲載しています。
ミドルウェアを作成する方法
まず、NestJSのCLIを使用して新しいミドルウェアを作成します。以下のコマンドを実行して、logger
という名前のミドルウェアを作成します。
nest g mi users/middleware/logger
このコマンドを実行すると、logger.middleware.ts
というファイルがusers/middleware
ディレクトリ内に作成されます。このファイルは、新しく作成されたミドルウェアの実装を行う場所です。
import { Injectable, NestMiddleware } from '@nestjs/common';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: any, res: any, next: () => void) {
console.log("Request received at " + new Date());
next();
}
}
上記のコードでは、ミドルウェアがリクエストを受け取るたびに、現在の日時とともに"Request received"というメッセージをコンソールに出力します。
ミドルウェアを適用する方法
次に、作成したミドルウェアをNestJSアプリケーションに適用します。これは、アプリケーションのモジュールであるusers.module.ts
ファイルで行います。
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
import { LoggerMiddleware } from './middleware/logger/logger.middleware';
@Module({
imports: [],
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggerMiddleware).forRoutes('*');
}
}
上記のコードでは、LoggerMiddleware
が全てのルート(*
)に対して適用されます。これにより、アプリケーションが受け取る全てのリクエストに対して、LoggerMiddleware
が動作します。
テスト
以下のコマンドを実行して、ミドルウェアが正しく動作していることを確認しましょう。各コマンドを実行すると、コンソールに"Request received"というメッセージとともに現在の日時が出力されます。
# ユーザー一覧の取得
curl http://localhost:3000/users
# ユーザーの追加
curl -X POST -H "Content-Type: application/json" -d '{"name":"Mike"}' http://localhost:3000/users
# ユーザーの更新
curl -X PUT -H "Content-Type: application/json" -d '{"name": "Bob"}' http://localhost:3000/users/1
# ユーザーの削除
curl -X DELETE http://localhost:3000/users/4
まとめ
この記事では、NestJSでミドルウェアを作成し
、それをアプリケーションに適用する方法を解説しました。ミドルウェアは、リクエストとレスポンスの間で動作し、特定の処理を行うための重要な概念です。NestJSを使ったアプリケーション開発において、ミドルウェアの作成と活用は必須のスキルとなります。