next.config.mjs
에서 rewrites
를 사용해 프록시(Proxy) 설정을 추가하여 http api 요청을 서버 측에서 처리하도록 수정하여 문제를 해결할 수 있었다.
여기서 rewrites
는 Next.js에서 특정 url 경로로 들어오는 요청을 다른 url 경로로 재매핑한다. rewrites
를 사용하면 사용자가 브라우저에 입력한 경로와 실제로 처리되는 경로를 분리할 수 있다.
/** @type {import('next').NextConfig} */
const nextConfig = {
async rewrites() {
return [
{
source: '/api/seoul-toilets/:path*', // 요청 경로
destination: `http://openAPI.seoul.go.kr:8088/${process.env.NEXT_PUBLIC_SEOUL_OPEN_API_KEY}/json/SearchPublicToiletPOIService/:path*`, // 실제 처리되는 경로
},
];
},
};
export default nextConfig;
https://your-domain.com/api/seoul-toilets/some-path
로 api 요청을 보낸다.rewrites
설정에 의해, 클라이언트가 /api/seoul-toilets/:path*
경로로 보내는 요청은 프록시가 받아 처리하게 된다.
이 프록시는 클라이언트의 요청을 다음과 같이 변경한다.
https://your-domain.com/api/seoul-toilets/some-path
이지만 프록시가 요청을 받아, 이를 내부적으로 http://openAPI.seoul.go.kr:8088/${process.env.NEXT_PUBLIC_SEOUL_OPEN_API_KEY}/json/SearchPublicToiletPOIService/some-path
로 변경하여 실제 서버로 전달하게 된다.http://openAPI.seoul.go.kr:8088
)는 요청을 처리하고, json 데이터를 프록시 서버에 응답으로 보낸다. 그리고 Next.js 서버(프록시)는 이 응답을 클라이언트에게 그대로 전달한다.참고