REST API와 GraphQL

2024. 4. 23. 22:20

GraphQL

GraphQL은 페이스북에서 2012년에 개발되기 시작하여 2015년에 공개된 데이터 질의 언어이다. 이는 주로 웹/모바일 애플리케이션에서 필요한 특정 데이터를 효율적으로 가져오기 위해 설계되었다.

 

REST API는 고정된 데이터 구조를 반환한다. 이는 over-fetching(필요 이상으로 많은 데이터를 받는 상황), 혹은 under-fetching(필요한 데이터를 한 번에 가져오지 못해 여러번의 요청을 보내야 하는 상황)을 유발할 수 있다.

 

GraphQL은 클라이언트가 필요한 데이터만을 정확히 명시하여 요청할 수 있게 함으로써 이러한 문제를 해결한다.

가상의 시나리오를 상정해보겠다.

 

REST API를 사용하는 경우

Over-fetching

- 사용자의 이름과 이메일만 필요하지만, 사용자의 프로필 API는 이름, 이메일, 주소, 생년월일 등 모든 정보를 반환할 때

요청 : GET /users/{id}

응답 :

{
  "id": "123",
  "name": "Jane Doe",
  "email": "jane.doe@example.com",
  "address": "1234 Elm St",
  "birthdate": "1990-04-05"
}

Under-fetching

- 사용자의 프로필과 함께 최근 게시물 목록까지 필요할 경우, 별도의 API 호출을 추가적으로 진행해야 함

 

추가 요청: GET /users/{id}/posts

추가 응답:

[
  {"id": "1", "title": "Hello World", "content": "Welcome to my blog..."},
  {"id": "2", "title": "Second Post", "content": "Another day, another post..."}
]

 

GraphQL를 사용하는 경우

요청:


{
  user(id: "123") {
    name
    email
    posts {
      title
    }
  }
}

응답 :

{
  "data": {
    "user": {
      "name": "Jane Doe",
      "email": "jane.doe@example.com",
      "posts": [
        {"title": "Hello World"},
        {"title": "Second Post"}
      ]
    }
  }
}

 

이처럼 GraphQL은 단 한 번의 요청으로 필요한 모든 정보를 정확히 얻을 수 있다.

'공부 > Web' 카테고리의 다른 글

CORS(Cross-Origin Resource Sharing)와 동작 시나리오  (0) 2024.04.28
Load Balancer와 Auto Scaling  (1) 2024.04.26
HTTP, Request & Response  (0) 2024.04.23
REST와 RESTful API에 대해 간략히  (0) 2024.04.23
웹 개발과 프레임워크  (0) 2024.04.16

BELATED ARTICLES

more