
이제 프로필 -> 설정 -> API로 가서 API 키를 복사해서 사용한다.
npm init vite MovieApp -- --template react
tsconfig.json을 수정한다.// tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": { "@/*": ["./src/*"] },
},
}
vite.config.ts파일을 수정한다npm install path
import path from 'path'
export default defineConfig({
plugins: [react()],
resolve: {
alias: [{ find: "@", replacement: path.resolve("src") }],
}
});
Popular, Top Rated, Upcoming 페이지와 영화 상세 페이지, 영화 검색결과 페이지를 라우팅한다.
// App.tsx
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
function App() {
return (
<Router>
<Header />
<ScrollUpButton />
<Routes>
<Route path="/" element={<Home />} />
<Route path="/popular" element={<PopularMoviePage />} />
<Route path="/top_rated" element={<TopRatedMoviePage />} />
<Route path="/upcoming" element={<UpcomingMoviePage />} />
<Route path="/:id" element={<MovieDetailPage />} />
<Route path="/search" element={<SearchMoviePage />} />
</Routes>
</Router>
);
}
axios.create를 사용해서 axios 인스턴스를 만들어 모듈화 한다.
// src/api/index.ts
import axios from "axios";
const BASE_URL = "https://api.themoviedb.org/3/"
const API_KEY = "f875e5e5c00e2deee7845***********"
export const instance = axios.create({
baseURL: BASE_URL
headers: {
"Content-Type": "application/json",
},
params: { api_key: API_KEY, language: "ko-KR", region: "KR" },
});
모듈화한 axios 인스턴스를 사용한다.
// src/api/movieApi.ts
import { instance } from "./index";
export const getPopularMovie = async (page: string) => {
const response = await instance.get("movie/popular", { params: { page } });
return response.data;
};