티스토리 뷰

Tech

REST API와 GraphQL의 차이점

buffso 2025. 3. 28. 11:26

REST API와 GraphQL은 클라이언트와 서버 간 데이터를 주고받는 방식이 서로 다른 API 설계 방식입니다.

REST API는 자원 중심의 구조로, URL(엔드포인트)을 통해 각각의 자원에 접근하고 HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용해 CRUD 작업을 수행합니다. 예를 들어 /users, /products처럼 명확한 엔드포인트가 있고, 각 엔드포인트는 고정된 응답 구조를 갖습니다. 이 방식은 구조가 단순하고, HTTP의 캐싱이나 로깅 등 기본 기능을 활용하기에 좋습니다.

반면, GraphQL은 단 하나의 엔드포인트(/graphql)를 사용하며, 클라이언트가 직접 필요한 데이터의 구조를 쿼리 형태로 정의하여 요청할 수 있는 방식입니다. 이로 인해 오버페칭(필요 이상의 데이터를 받는 문제)이나 언더페칭(원하는 정보를 다 받지 못해 여러 번 요청해야 하는 문제)을 해결할 수 있습니다. 또한 여러 관계형 데이터를 한 번에 조회할 수 있어, 복잡한 UI나 모바일 환경에서의 최적화에 유리합니다.

 

 

 REST API와 GraphQL의 차이점 및 선택 기준

  • REST API
    • 자원 중심(Resource Oriented)의 API 설계 방식
    • URL(엔드포인트)마다 고정된 자원에 접근 (/users, /products 등)
    • HTTP 메서드(GET, POST, PUT, DELETE 등)를 활용하여 자원에 대한 행위를 정의
    • 구조가 단순하고 익숙하여 학습 곡선이 낮고, HTTP 캐싱이나 로깅 등 기존 인프라 활용에 유리
  • GraphQL
    • 단일 엔드포인트(/graphql)에서 클라이언트가 필요한 데이터를 쿼리로 정의하여 요청
    • 오버페칭(필요 이상의 데이터 수신)언더페칭(불충분한 데이터 응답) 문제 해결
    • 관계형 데이터 및 중첩 구조 데이터를 한 번에 요청 가능 → 네트워크 성능 최적화에 유리
    • 프론트엔드 개발자가 유연하게 필요한 데이터만 선택 가능

 

✅ 상황에 따른 선택 기준

  • REST API가 적합한 경우
    • 단순한 CRUD 기능 위주의 서비스 (예: 사용자 등록, 상품 목록 조회 등)
    • HTTP 기반의 캐싱, 인증, 모니터링 등을 적극 활용하고자 할 때
    • 명확한 자원 중심 URL 설계가 가능할 때
  • GraphQL이 적합한 경우
    • 다양한 데이터를 조합해 화면을 구성해야 할 때 (특히 모바일이나 대시보드 화면)
    • 클라이언트마다 필요한 데이터가 달라, 백엔드에서 모든 경우를 다 처리하기 어려울 때
    • 네트워크 요청 횟수를 최소화하거나 데이터 전송량을 줄여야 할 때

 

 

'Tech' 카테고리의 다른 글

프롬프트 엔지니어링 가이드  (1) 2025.02.18