• api
    • httpProvider - axios client를 custom 한 클래스 입니다. axios response data type을 generic으로 정의합니다. 또한 params,payload의 타입또한 generic으로 정의해주도록 합니다.
    • httpClient - httpProvider 클래스를 extend 합니다. 위의 메소드 뿐만 아니라 토큰관리 로직, 중요 통신과 관련된 코어 로직을 포함합니다.
    • services - 서비스별 api클래스 파일을 담은 폴더입니다.
      • [serviceName] - 서비스별 폴더 입니다.
        • serviceNameService.ts - 모듈화된 api클래스 입니다.

          • 아래서 선언한 타입들을 가져올 때 아래처럼 가져옵니다.

            import * as types from './serviceNameService.types.ts'
            
        • serviceNameService.types.ts - api클래스에서 사용 할 타입을 정의한 폴더입니다. 기본예제는 아래와 같습니다.

          import apiClient from '../../apiClient';
          
          import type * as types from './testService.types';
          
          const Paths = { testList: '/test', testDetail: '/test/detail' };
          export default class TestService {
            private apiClient: typeof apiClient;
          
            constructor() {
              this.apiClient = apiClient;
            }
          
            readTestList = () => this.apiClient.get<types.ReadTestListResponse>(Paths.testList);
          
            readTestDetail = (params: types.ReadTestDetailParams) =>
              this.apiClient.get<types.ReadTestDetailResponse>(`${Paths.testDetail}/${params.testId}`);
          }
          
        • 메소드 작명 규칙은 아래와 같습니다. (CRUD, 시멘틱하게 합니다.)

          • get → read
          • post → create
          • put, fetch → update
          • delete → delete
        • api 요청 Paths 는 객체로 관리합니다. 한번 수정했을 때 일괄수정 되도록 편리하게 관리합니다.