Halo World

[GraphQL] GraphQL 기초 (REST API와 비교, GraphQL 강점, Apollo란?) 본문

개발 지식/DEVELOPMENT

[GraphQL] GraphQL 기초 (REST API와 비교, GraphQL 강점, Apollo란?)

_Yeony 2022. 2. 5. 18:13

 

본 포스팅은 Inflearn 얄코님 강의를 수강하며 복습용으로 작성하였습니다.

https://www.inflearn.com/course/%EC%96%84%ED%8C%8D%ED%95%9C-graphql-apollo/dashboard

 

[무료] 얄팍한 GraphQL과 Apollo - 인프런 | 강의

⚡ 짧고 굵은 전체 90분 강좌! 사이트의 코드들을 복붙하며 빠르게 GraphQL을 배우고 아폴로 사용법을 익히세요., - 강의 소개 | 인프런...

www.inflearn.com

 

 

GraphQL은 Rest API 방식의 단점을 보완할 수 있는 방법

 

 

Rest API 방식의 단점 


아래와 같은 경우가 발생하기 쉽다.

  - 불필요한 정보까지 받아오는 상황 (OverFetching) 

  - 필요한 정보를 못 받아오는 상황 (UnderFetching)

 

 ex) OverFetching : 사용자의 이름만 필요한데, 이름 외적인 개인정보도 함께 Response로 받게 됨

       UnderFetching : 특정 사용자 정보의 response로 또 다시 쿼리를 해야하는 상황.

                                   Response로 1번 사용자가 속한 팀을 알아내고, 그 팀에 속한 팀원들을 알아야 하는 경우 -> 2번 쿼리 필요

 

 

 

GraphQL로 CRUD 해보기


https://gitlab.com/yalco/yalco-inflearn-graphql-apollo

코드는 위 얄코님 강의의 1-3으로 사용하였다.

 

1. query 

  GraphQL에서 Read에 해당하는 요청으로 REST API와 달리 원하는 정보만 쿼리할 수 있다.

 

  •   각 팀 목록에서 manager와 office에 해당하는 정보만 쿼리 (Over fecthing 해결)

  • 팀 1의 특정 정보와 팀 1에 속하는 팀 멤버의 값 리턴 (Under fetching 해결)

 

 

2. mutation

  GraphQL에서 생성/수정/삭제 요청 시 사용하는 명령어

 

  2-1. 팀 정보 생성 요청

 

 2-2. 팀 정보 수정 요청

 

  2-3. 팀 정보 삭제 요청

 

 

 

 

GraphQL의 강점


1. 필요한 정보만 선택하여 받아올 수 있음

  • Overfetching 문제 해결
  • 데이터 전송량 감소

2. 여러 계층의 정보를 한꺼번에 받아올 수 있음

  • Underfetching 문제 해결
  • 요청 횟수 감소

3. 하나의 endpoint에서 모든 요청을 처리

  • 하나의 URI에서 POST로 모든 요청을 처리 가능
  • query, mutation 모두 POST로 처리됨

 

그러나, REST API의 장점도 충분히 많기 때문에 상황에 따라 적절하게 선택해 사용해야 한다.

 

 

 

Apollo 란?


  • GraphQL은 REST API와 마찬가지로 API 요청을 주고받는 명세일 뿐이다.
  • 이를 사용하려면 GraphQL의 명세대로 백엔드/프론트엔드를 구현하거나, 이를 처리해주는 솔루션을 사용하여야 함
    ex) GraphQL.js, GraphQL Yoga, AWS Amplify, Relay 등..
    (https://graphql.org/code/ 에서 GraphQL을 위한 여러 솔루션들을 확인할 수 있다.)
  • Apollo는 이 솔루션들 중 하나