관리 메뉴

Mini

[Nest] @Exclude => res에 비밀번호 제외, 직렬화 본문

JS/Nest.js

[Nest] @Exclude => res에 비밀번호 제외, 직렬화

Mini_96 2024. 9. 20. 22:27

* 직렬화

  • 직렬화 : 현시스템에서 사용되는 데이터의 구조를 다른곳에서도 사용가능하도록 변환 // class -> JSON
  • 역직렬화 :  JSON을 obj로 변환

 

 

  • 컨트롤러
@Get()
@UseInterceptors(ClassSerializerInterceptor)
getAllUsers(){
  return this.usersService.getAllUsers();
}
  • 엔티티
/**
 * REQ
 * fe -> be
 * plain obj (JSON) -> class instance (DTO)
 * 
 * RES
 * be -> fe
 * class instance(DTO) -> plain obj (JSON)
 * 
 * toClassOnly -> REQ에만 적용
 * toPlainOnly -> RES에만 적용
 */
@Exclude({
  toPlainOnly:true, //RES에 비밀번호 제외
})
password: string;

결과

 

* 전역으로 적용하기

  • 기존의 단점 : 컨트롤러에 일일히 @UseInterceptors(ClassSerializerInterceptor) 달아야함
  • 개선
  • appModule > providers에 추가하면 전역으로 작동함.
  providers: [AppService,
    {
      provide:APP_INTERCEPTOR,
      useClass: ClassSerializerInterceptor,
    }
  ],
})
export class AppModule {}