私は NestJS プロジェクトで作業しており、すべてのリクエストをログに記録したいと考えています。REST API でFastifyを使用しています。リクエストボディを取得するためのネストミドルウェアを作成しました:
import { HttpException, Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
const { httpVersion, headers, method, baseUrl, params, query, body } = req;
// body is Undefined!
console.log('Request Body...', body);
next();
}
}
ログをコンソールに出力すると、undefinedという出力が得られました。
app.module.ts:
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(LoggerMiddleware)
.forRoutes('*');
}
}
main.ts:
import { NestFactory } from '@nestjs/core';
import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create<NestFastifyApplication>(
AppModule,
new FastifyAdapter()
);
await app.listen(3000);
}
bootstrap()