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이 훨씬 개발하기 어렵지만, 사용자 입장에서는 훨씬 단순하다.
'GraphQL(HotChocolate)' 카테고리의 다른 글
.NET 6] GraphQL Voyager (0) | 2022.04.19 |
---|---|
.NET 6] Hot Chocolate GraphQL : mutation(5) (0) | 2022.02.09 |
.NET 6] Hot Chocolate GraphQL : multiple requests (4) (0) | 2022.02.08 |
.NET 6] Hot Chocolate GraphQL : EF Core (3) (0) | 2022.02.08 |
.NET 6] Hot Chocolate GraphQL : query 실행 (2) (0) | 2022.02.08 |
댓글