REST API와 GraphQL

gyeol·2025년 10월 15일

CS

목록 보기
7/13
post-thumbnail

REST API

REST는 리소스 중심의 아키텍처 스타일이다. 클라이언트가 URL을 통해 리소스에 접근하소 HTTP 메서드로 CRUD를 수행한다.

GET /users/1
GET /users/1/posts
GET /users/1/comments

REST API는 다양한 엔드포인트로 여러번 요청해야 다양한 데이터를 가져올 수 있다.

GraphQL

Facebook이 개발한 쿼리 언어로, 클라이언트가 필요한 데이터만 선택적으로 요청할 수 있다. 이때, 단일 엔드포인트를 통해 다양한 쿼리를 처리할 수 있다.

  • 클라이언트는 필요한 데이터만 요청하고 서버는 정확한 데이터만 반환해 불필요한 네트워크 사용 최소화
  • REST API는 여러개의 엔드포인트를 사용하지만 GraphQL은 /graphql 이라는 엔드포인트만 사용해 모든 요청 처리
  • 스키마 언어(SDL)을 사용해 API의 데이터 구조를 명확히 정의
    type User {
      id: ID!
      name: String!
      email: String!
    }
  • API 응답이 계층적 구조로 구성되어 있어 클라이언트에서 복잡한 데이터 한 번에 요청 받아올 수 있음
    query {
      user(id: 1) {
        name
        posts {
          title
          content
        }
        comments {
          text
        }
      }
    }
    한 번의 요청으로 유저, 게시글, 댓글 모두 가져올 수 있음

REST API vs GraphQL

구분REST APIGraphQL
요청 방식HTTP 메서드(GET, POST, PUT, DELETE)query, mutation, subscription
엔드포인트리소스별로 다수 존재 (/users, /posts)단일 엔드포인트(/graphql)
데이터 요청 단위고정된 응답 구조필요한 필드만 선택 가능
요청 횟수여러 엔드포인트에 다중 요청 필요한 번의 요청으로 여러 리소스 조회 가능
응답 데이터서버가 정의한 형태 고정클라이언트가 직접 구조 정의
데이터 포맷JSON, XML 등JSON
캐싱HTTP 캐싱 쉬움구조상 캐싱 복잡
오버페칭 / 언더페칭발생 가능해결 가능

REST API는 리소스 중심으로 단순하고 직관적이며 HTTP 캐싱에 용이하며, GraphQL은 필요한 데이터만 요청하기에 네트워크 효율을 높일 수 있다.

profile
공부 기록 공간 '◡'

0개의 댓글