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 |



