develjsw / nestjs-api

0 stars 0 forks source link

@Expose() 활용하여 DTO 속성명 변경 #16

Open develjsw opened 4 months ago

develjsw commented 4 months ago
  1. 이슈 : 외부업체의 협업에서 API를 통해 받은 값을 내부 DB에 저장해야 하는 상황에서 내부 컬럼 생성 규칙과 외부에서 전달받은 DTO의 속성명이 크게 차이가 나는 경우 어떻게 편하게 해결이 가능할까 고민하게 됨

  2. 해결 방안 : DTO에서 @Expose() 데코레이터를 활용하면 손 쉽게 해결 가능

    
    import { Expose } from 'class-transformer';

export class TestDto { @Expose({ name: '받아온 이름' }) 내부에서 사용할 이름: 타입 }

EX) import { Expose } from 'class-transformer';

export class TestDto { @Expose({ name: 'developerName' }) peopleName: string }


3. 참고 사항 : @Expose() 데코레이터는 속성 이름 변경 외에도
특정 속성만 직렬화/역직렬화 하거나 특정 조건에 따라 속성을 노출시키고 싶을 때에도 사용함.