보통 API KEY는 본인의 고유한 것이기 때문에 다른 사용자에게 노출되지 않도록 주의해야 한다. 노마드코드 강의를 통해
Redirect
를 학습하면서 API KEY나 특정 경로를 감추기에 좋은 기능인Rewrite
에 대하여 설명하고자 한다!
redirect
는 사용자가 변경된 path로 유입되면 새로운 경로로 안내하는데, 아래와 같이 next.config.js 파일을 수정해주면 된다. "/contact"라는 특정 경로를 직접 입력하면 "/form"이라는 새로운 경로로 redirect
되는 것을 알 수 있다.
const nextConfig = {
reactStrictMode: true,
async redirects() {
return [
{
source: "/contact",
destination: "/form",
permanent: false,
}
]
},
}
module.exports = nextConfig
rewrite
는 redirect처럼 경로 이동 기능을 수행하지만, 여기서 한가지 다른 점은 URL이 바뀌지 않은 상태로 이동한다는 점이다. 그렇기 때문에 API KEY 혹은 특정 경로를 숨기고 싶을 때 사용할 수 있다.
git 연동을 막기위해 .env
파일을 생성하여 API_KEY를 선언해주어야 한다.
이때, gitignore 파일 #vercel 부분에 .env 추가하는 것을 잊지말자.
# vercel
.vercel
.env
next.config.js
const API_KEY = process.env.API_KEY;
const nextConfig = {
reactStrictMode: true,
async rewrites() {
return [
{
source: "/api/movies",
destination: `https://api.themoviedb.org/3/movie/popular?api_key=${API_KEY}`
}
]
}
}
module.exports = nextConfig
index.js
에서도 fetch 설정한 경로로 변경해주어 API_KEY가 노출되지 않도록 해준다.
useEffect(() => {
(async () => {
const { results } = await (await fetch(`/api/movies`)).json();
setMovies(results);
})();
}, []);