카테고리 없음

패스트캠퍼스 환급챌린지 27일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

Laftel 2025. 3. 31. 16:08
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다 


객체로 입력하는 거는, 클래스 인스턴스가 아니다.

const movie1 = new Movie();
movie1.id = 1;
movie1.title = '해리포터';
movie1.genre = 'fantasy';

 

  • 위 코드는 Movie 클래스의 인스턴스를 직접 생성하고,
  • 그 인스턴스를 this.movies 배열에 저장한 후,
  • 나중에 클라이언트에게 응답할 때 이 객체들을 반환하게 됩니다.

movie.controller.ts파일에 @UseInterceptors(ClassSerializerInterceptor)를 추가한 이유

1. @Exclude, @Expose 데코레이터가 적용된 필드만 JSON으로 응답되도록 하기 위해

  • class-transformer의 데코레이터(@Exclude, @Expose)는 직렬화 시 어떤 필드를 포함/제외할지를 제어합니다.
  • 그런데 이 기능은 NestJS에서 ClassSerializerInterceptor를 활성화해야만 동작합니다.

NestJS는 JSON 응답을 보낼 때 어떤 일이 일어나는가?

  • NestJS는 기본적으로 클래스 인스턴스를 JSON으로 변환(직렬화) 하여 클라이언트에게 응답합니다.
  • 이때 모든 필드가 노출되거나, 숨기고 싶은 정보(예: 내부 필드, 보안 정보 등)도 같이 나갈 수 있습니다.
@UseInterceptors(ClassSerializerInterceptor)
@Get()
getMovies() {
  return this.movies;
}

 

이렇게 설정하면 Movie 클래스에 붙인 @Expose() 또는 @Exclude() 설정이 응답에 반영됩니다.

클래스 인스턴스를 단순 객체처럼이 아닌, 설계된 구조 그대로 JSON으로 변환하기 위해

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB

반응형