// src/apis/request.ts export default class Request { public req: AxiosInstance; constructor(baseURL: string) { // 만약 header를 받는다면 여기서 받는다. // 공통으로 일괄되게 처리해야할 것들은 여기서 한번에 처리한다. //(ex. timeout이 났을 때 재시도를 3번까지 하게 한다던지, 토큰을 주입받아 처리하는 로직을 넣는다던지) this.req = axios.create({ baseURL }); } } // src/apis/documents.ts export default class Documents extends Request { getDocuments = () => this.req.get<getDocuments의_RESPONSE_DATA_TYPE>('/'), getDocumentById = (id: string) => this.req.get<getDocumentById의_RESPONSE_DATA_TYPE>(`/${id}`), } // src/apis/index.ts export const documentsAPI = new Documents(BASE_URL); // 사용하는 곳 documentsAPI.getDocuments();