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




객체로 입력하는 거는, 클래스 인스턴스가 아니다.
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
반응형