Serialization을 사용하지 않을때

  1. DB에서 조회한 컬럼 값이 담긴 객체를 외부에 그대로 전달하면,

    DB의 구조를 외부에 쉽게 알 수 있고, 민감한 정보가 담겨서 전달될 수 있다.

    → 보안상 매우 취약

  2. DB에서 조회한 값이 담긴 Entity 객체를 외부에서 그대로 사용하는데 서버 내부에서 Entity가 변경될 경우,

    해당 객체를 사용하는 모든 코드의 변경이 일어날 수 있다.

    → 유지 보수의 문제

사용해서 위의 문제를 어떻게 해결할지?

  1. Entity를 Dto 객체로 변경하고,
  2. 최종적으로 응답할 때 Dto 객체를 JSON 객체로 직렬화 한다.

Nest.js에서 Serialization

  1. 실제 응답을 보내기 전에 데이터 조작에 대한 깨끗한 추상화 계층을 제공한다.

    ex) 사용자 비밀번호와 같은 민감한 데이터는 항상 최종 응답에서 제외

  2. 응답되는 특정 속성은 추가 변환이 필요할 수 있다.

응답 객체 직렬화

Nest.js에서 공식적으로 제공하는 class-transformer 패키지를 사용한다.

1. 패키지 설치