WIL (What I Learned)
1. FACTS (사실, 객관)
이번 주에는 NestJS를 활용해 댓글 기능을 구현하는 작업을 진행했다.
CommentsService와 CommentsController를 작성하며 CRUD(생성, 조회, 수정, 삭제) 로직을 구현했다.
- TypeORM을 사용해 데이터베이스에 댓글 데이터를 저장하고, 특정 카드별로 댓글을 관리할 수 있도록 API를 설계했다.
- 사용자 인증 기능은 아직 구현하지 못했지만, 나중에 추가할 수 있도록 코드에 미리 주석을 남겨두었다.
- 코드에서 발생한 에러(
_.isNil 문제)를 해결하기 위해 lodash를 설치하고, 라이브러리를 올바르게 사용하는 방법을 학습했다.
- 질문을 통해 URL 패턴을 정리하고, API의 요청/응답 구조를 체계적으로 이해하게 되었다.
2. FEELINGS (느낌, 주관)
NestJS를 다루면서 처음에는 약간 어렵게 느껴졌다. 특히 데코레이터와 TypeORM을 함께 사용하는 방식이 낯설었다.
- 그러나 코드를 작성하고, 질문을 통해 문제를 해결하면서 자신감이 붙었다.
- 에러를 만났을 때는 답답했지만, 해결하면서 성취감을 느꼈다.
- 아직 인증 기능이 없어서 사용자 정보를 임시로 하드코딩해야 한다는 점이 아쉬웠지만, 앞으로 개선할 수 있다는 점에서 동기부여가 됐다.
3. FINDINGS (배운 것)
이번 작업을 통해 여러 가지를 배울 수 있었다:
- NestJS의 구조적인 강점: 데코레이터를 활용하면 컨트롤러와 서비스의 역할을 명확히 구분할 수 있어 유지보수가 용이하다는 점을 깨달았다.
- TypeORM 활용법:
save, findBy, update, delete 등 다양한 메서드를 사용해 데이터를 쉽게 관리할 수 있었다.
- 에러 해결 능력:
lodash 관련 에러를 해결하면서 디펜던시 관리와 라이브러리 활용 방법에 대해 배웠다.
- RESTful API 설계: URL 패턴을 정리하면서 RESTful API의 직관적인 설계가 얼마나 중요한지 다시 한 번 느꼈다.
4. FUTURE (미래)
이번 경험을 기반으로 앞으로 다음과 같은 점을 개선하고 적용할 계획이다:
1. 인증 및 인가 추가:
- 댓글 생성, 수정, 삭제 시 사용자 정보를 인증 미들웨어를 통해 받아오도록 구현할 계획이다.
- 이를 통해 사용자별 권한 관리를 강화하고 더 안전한 API를 제공할 것이다.
-
에러 핸들링:
- 글로벌 에러 필터를 추가해 더 나은 사용자 경험을 제공할 예정이다.
- 예외 상황에 대한 적절한 메시지를 반환하도록 설계하고 싶다.
-
테스트 코드 작성:
- 각 API 엔드포인트에 대해 단위 테스트 및 통합 테스트를 작성해 코드의 신뢰성을 높일 계획이다.
-
코드 개선:
- 중복되는 로직을 줄이고, 더 간결한 코드를 작성할 수 있도록 리팩토링을 진행할 것이다.
- TypeScript의 타입 시스템을 적극 활용해 타입 안전성을 높일 예정이다.
**이번 주의 배움은 작은 성공들이 쌓여 더 나은 개발자가 되는 기반이 된다는 것을 다시 느끼게 해줬다. 다음 주에는 더 나아진 결과물을 만들어내고 싶다!