본문 바로가기
GraphQL(HotChocolate)

GraphQL vs REST

by Fastlane 2022. 2. 9.
728x90
반응형

1. Over-fetching

REST API를 호출 시, 내가 필요한 property를 지정할 수 없기 때문에, 필요한 것보다 더 많은 데이터를 return받는다. 

GraphQL은 필요한 object의 필요한 field를 query로 지정할 수 있다. Over-fetching을 피할 수 있다. 

 

2. Under-fetching

REST는 child object의 데이터를 얻기 위해, 추가로 api를 request 해야 한다. 

GraphQL은 child object의 field를 추가로 지정할 수 있기 때문에 한번의 호출로 원하는 child object의 데이터까지 가져올 수 있다. 

 

3. Operation

Operation GraphQL REST
Read Query GET
Write Mutation PUT, POST, PATCH, DELETE
Events Subscription N/A

Query, Mutation : client, server사이의 http protocol을 이용한 request, response

Subscription : web socket을 사용하기 위해 Apollo protocol사용

 

GraphQL의 모든 request는 post request이다. REST api 처럼 읽기를 위해서 get request를 사용하고, 쓰기를 위해 post request를 하는 것과 다르다. 

 

postman을 사용하여 아래와 같이 GraphQL을 호출해볼 수 있다. 

POST를 선택하고, Body로는 GraphQL을 선택한다. URL의 endpoint는 /graphql/ 이며 오직 하나의 endpoint를 갖는다. 

4. When to use ? 

GraphQL Interactive / real-time
Mobile apps
Complex Object Hierarchy
Complex Queries
REST Non-Interactive (system to system)
Microservices
Simple Object Hierarchy
Repeated, simple queries

GraphQL api가 Rest api가 만들기 훨씬 어렵고, Rest는 훨씬 단순하다. 

개발자 입장에서는 GraphQL이 훨씬 개발하기 어렵지만, 사용자 입장에서는 훨씬 단순하다. 

 

 

728x90
반응형

댓글