코딩일상

[nest.js] middleware 적용 본문

개발 공부/nest.js

[nest.js] middleware 적용

solutionMan 2022. 12. 5. 13:06
반응형

미들웨어

미들웨어는 라우트 핸들러 보다 먼저 호출되는 함수입니다 . 미들웨어 기능은 애플리케이션의 요청-응답 주기에서 요청  응답 객체 와 미들웨어 기능에 액세스할 수 있습니다 . next()다음 미들웨어 기능은 일반적으로 라는 변수로 표시 됩니다next .

Nest 미들웨어는 기본적으로 express 미들웨어와 동일합니다. 공식 익스프레스 문서의 다음 설명은 미들웨어의 기능을 설명합니다.

 

로깅파일만들기 CLI 명령어 이용

$ nest g middleware logger

1)Documentation그대로  logging을 할 경우

import { Injectable, NestMiddleware } from '@nestjs/common';
import { NextFunction, Request, Response } from 'express';

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: NextFunction) {
    console.log(req.ip);
    next();
  }
}

요청을 받았을때 logging 결과값은 아래와 같다.

 

2)nest js Logger Class를 이용하여 logging을 할 경우

import { Injectable, Logger, NestMiddleware } from '@nestjs/common';
import { NextFunction, Request, Response } from 'express';

@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  //nestjs의 logger클래스를 이용하여 logging 진행
  private logger = new Logger('HTTP');
  use(req: Request, res: Response, next: NextFunction) {
    this.logger.log(`${req.ip},${req.method}, ${req.originalUrl}`);
    next();
  }
}

 

3)nest js Logger Class를 이용하여 logging을 할 경우 +RES값에 대해서도 볼 경우

import { Injectable, Logger, NestMiddleware } from '@nestjs/common';
import { NextFunction, Request, Response } from 'express';

//nestjs의 logger클래스를 이용하여 logging 진행
//res응답할때 까지 의 값도 같이 logging 할 경우
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  private logger = new Logger('HTTP');

  use(req: Request, res: Response, next: NextFunction) {
    res.on('finish', () => {
      this.logger.log(
        `${req.ip},${req.method},${res.statusCode}`,
        req.originalUrl,
      );
    });
    next();
  }
}

 

참고 레퍼런스

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac

docs.nestjs.com

 

반응형
Comments