1. 오늘 겪은 문제
- Nest logger
- Nest filter
- Nest pipe vs filter
- Nest class-validator
2. 해본 시도
- 오늘은 각각 logger, class-validator, exception-filter를 작성하여 추가했다.
- 작성하다보니 pipe 와 filter가 서로 무엇이 다른거지? 라는 생각이 들었다.
3. 해결 방법
- logger 같은 경우는 logger middle ware를 nest cli를 통해 생성해주고, app.module의 클래서에 추가해 주었다.
exception-filter는 예외처리 시 해당 error를 커스텀하게 보여주기 위해서 설정하였다. 기본적으로 nest에서 제공하는 exception들이 있지만 해당 exception 외에도 커스텀하게 error message를 보내줘야 하기 때문에 필요했다.
class-validator는 entity에 함께 작성해 주었다. 굉장히 간단하면서 편해서 자주 애용할 것 같다. 작성 후에는 main.ts파일에 useGlobalpipes로 validation pipe를 등록해주는 것도 잊지말자.
- pipe vs filter의 차이점은 filter는 말 그대로 오류나, 예외사항을 캐치해서 필터링해주는 역할을 하고, pipe는 요청에서 들어오는 데이터들에 대하여 유효성 검사나, 변환 등을 수행하여 데이터를 가공하는 파이프 역할을 한다고 보면 된다.
4. 새롭게 알게 된 점
- middleware ,guard, interceptor, pipe, filter 이 Nest의 다섯 가지 도구들은 유사해 보이지만 각각의 정확한 역할이 있고 이를 수행하기 위해 존재한다. 각각의 사용법들이 제한되어 있고 구체적인 사용 상황들이 어느 정도 정해져 있기 때문에 오히려 빨리 적응할 수 있다는 생각이 들었다.
5. 오늘 더 효율적으로 일할 수 있었을 것 같은 방법은?