KAKAO.GG
프론트엔드

Next.js에서 Java 서버 API를 사용하는 방법

GG
2025. 6. 1.
조회 116
#Next.js API 프록시#외부 API fetch 전략#서버 액션 vs API 라우트 구분

이 문서는 Next.js 프론트엔드에서 외부 Java 백엔드 API를 호출하는 관점에서 작성되었으며, 백엔드 자체 구현보다는 프론트엔드에서 어떤 방식으로 API 요청을 설계해야 하는가에 중점을 두었습니다.

 

Next.js를 프론트엔드 프레임워크로 사용하는 상황에서, 외부에 별도로 존재하는 Java(Spring 등) 백엔드 API를 호출해야 할 경우가 많습니다.

 

  • 직접 Java 서버 API를 fetch하는 방법

  • Next.js의 API 라우트를 프록시로 사용하는 방법

 

사용 방식 요약

방식설명프론트엔드 입장에서의 고려사항
직접 fetch 호출컴포넌트에서 Java API URL 직접 호출빠르고 간단하지만 CORS 및 URL 노출 가능성 있음
API 라우트 프록시app/api/route.ts에서 Java API를 호출백엔드 주소 숨김, 인증 및 CORS 문제 해결 가능

 

식별 상세 설명 (프론트 중심 설명)

① Java API를 직접 fetch 호출 (프론트에서 바로 요청)

  • 사용 예시

const res = await fetch("https://api.example.com/data");
const data = await res.json();
  • 프론트엔드 기준 장점

    • 매우 직관적이고 코드가 간단

    • 컴포넌트 안에서 바로 요청 가능

    • 데이터가 캐시되거나 SSG/SSR 처리 가능

  • 주의점

    • Java 서버가 CORS 허용하지 않으면 브라우저에서 요청 실패

    • 외부 API URL이 클라이언트에 노출됨

 

② Next.js API 라우트 (app/api)를 프록시로 사용

  • 사용 예시

// app/api/data/route.ts
export async function GET() {
  const res = await fetch("https://api.example.com/data");
  const json = await res.json();
  return Response.json(json);
}

클라이언트에서는

fetch("/api/data");
  • 프론트엔드 기준 장점

    • Java API URL을 사용자에게 숨길 수 있음

    • API 키나 토큰 등을 서버에서 처리 가능

    • CORS 에러가 나지 않음 (Next.js 서버가 대신 요청)

  • 주의점

    • Next.js 서버도 함께 배포해야 함

    • 라우트 구조 설계와 유지보수가 필요

 

Next.js에서 Java API를 호출하는 과정은 명백히 프론트엔드 요청 설계의 일환이며, 요청 방식에 따라 서비스 성능이나 보안, 유지보수성이 크게 달라질 수 있습니다.

  • 단순하고 빠른 구현이 목표라면 직접 fetch 호출

  • 보안, CORS, 인증 처리를 통합하려면 API 라우트를 활용한 프록시 방식

Next.js의 app/api/route.ts는 백엔드 구현이라기보다는 프론트엔드 요청을 보조하는 유틸리티 서버 역할로 이해하면 좋습니다.