<aside> 💻
feature/auth 브랜치의 주요 목적은 JSON Placeholder를 이용한 외부 통신 테스트입니다.
이해하기 쉽도록 각 단계별로 진행하면서, 캐싱이 어떻게 동작하는지 확인해볼 수 있습니다.
src/
├── types/ # Todo 타입 정의
├── services/ # Todo API 함수
├── hooks/queries/ # Todo Query Hooks
├── pages/ # Todo 리스트/상세 페이지
└── components/ # Todo 관련 컴포넌트
</aside>
// src/types/todo.ts// Todo 아이템의 기본 구조
export interface Todo {
userId: number;// Todo 작성자 ID
id: number;// Todo 항목의 고유 ID
title: string;// Todo 제목
completed: boolean;// 완료 여부
}
// API 응답 타입 정의
export interface TodoListResponse {
data: Todo[];// Todo 목록 응답
}
export interface TodoDetailResponse {
data: Todo;// 단일 Todo 응답
}
이러한 타입 정의를 통해:
다음은 이 타입들을 사용하여 Todo API 통신을 구현할 예정입니다.
// src/services/todoApi.ts
import axios from 'axios';
import type { Todo } from '@/types/todo';
const BASE_URL = '<https://jsonplaceholder.typicode.com>';
export const todoAPI = {
// Todo 목록 조회
getTodos: async (): Promise<Todo[]> => {
const response = await axios.get<Todo[]>(`${BASE_URL}/todos`);
return response.data;
},
// Todo 상세 조회
getTodoById: async (id: number): Promise<Todo> => {
const response = await axios.get<Todo>(`${BASE_URL}/todos/${id}`);
return response.data;
}
};
이렇게 구현된 API 함수들은: