약 6주에 걸친 넘블의 쿠팡 클론 프로젝트에 참여했습니다.
첫 번째 요구사항은 구현된
AuthService
의 리팩토링이었습니다.
구체적 요구사항
base.service.ts
리팩토링을 진행하면서 우선한 코드의 개선 사항은 2가지였습니다.
- 코드의 중복 제거 (재사용성)
- 코드의 확장성
이를 위해 base.service.ts
라는 추상 클래스를 구현했습니다. 또한, 중복되는 타입을 단일화했습니다.
base.service.ts
는 추가될 서비스의 부모 클래스로 axios를 통해 리소스를 요청하는 메서드의 집합입니다.
base.service.ts
구체적 요구사항
useRequest.ts
두 번째 요구사항은 의존성 역전 원칙을 적용한 useRequest 커스텀 훅 구현입니다.
의존성 역전 원칙 : 상위 계층이 하위 계층에 의존하는 전통적인 의존관계를 역전시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. (위키백과)
이를 위해 get 요청을 하는 useRequestGet
함수와 post 요청을 하는 useRequestPost
함수를 구현했습니다. 이 함수들은 pages/index.tsx
내부에서 동작하던 API request 로직을 모듈화하고 추상화함으로써 의존성을 제거할 수 있게 했습니다.
useRequestGet.ts
useRequestPost.ts