GraphQL 입문 (2) 장점 및 특징

yoneeki·2022년 12월 9일
0

GraphQL

What is GraphQL?

  • GraphQL은 무언가를 다운 받아서 사용하는 것이 아니다. 하나의 specification, 즉 설명이다. : GraphQL Specification
  • GraphQL은 domain specific language이다. 사람들이 원하는 방식대로 구현하게 하는 언어이다.
  • 에어비앤비, 메타, 깃헙, 페이팔, 라쿠텐, 트위터 등등 수많은 대기업이 GraphQL을 사용한다.

GraphQL이 해결한 문제들

REST api가 가진 문제

  • Ask for what you need, get exactly what. (Overfetching)
  • Get many resources in a single request. (Underfetching)
  • REST api는 오버페칭, 언더페칭과 같은 문제를 가진다. GraphQL은 이를 해결했다.

Overfetching

  • Overfetching(오버페칭) : URL에 request를 넣었을 때 내가 쓰지도 않을 데이터까지 포함해서 불필요하게 너무 많은 데이터를 송신받는 것. 이로 인해 데이터 전송이 느려지고 백엔드가 지나치게 많은 일을 수행해야 한다.
  • 우리가 GraphQL query를 API에 보내면 우리는 정확히 요청한 것만 받는다. 즉 GraphQL에서는 필요한 data를 요청한다. 그냥 단순히 data를 달라고 request하는 게 아니라 말이다.
  • REST api였다면 엄청나게 많은 JSON 데이터를 한번에 다 받았어야 했을 것이다.

Underfetching

  • Underfetching(언더페칭) : 우리가 필요한 것보다 데이터를 적게 받는 일. 즉 API Request가 내가 필요한 정보 data를 다 주지 않는 일.
  • 모든 api는 overfetching의 문제를 갖고 있고 그 중 몇몇은 underfetching의 문제를 가진다.
  • 특히 REST api는 필요한 데이터를 얻을 때까지 복수의 request를 넣어야 하는 경우가 있다. url을 반복적으로 fetch하는 것이다. REST api를 사용할 때는 하나의 url이 줄 수 있는 것보다 많은 데이터가 필요할 수 있다는 것이다. api request가 늘어난다면 multiple url에서 loading이 필요할 것이고 작업속도는 늘어난다.
  • GraphQL은 이를 해결해서 작업 속도를 빠르게 만든다.

GraphQL 실습

  • GraphQL 실습
  • 이 화면에서 root를 클릭해보면 GraphQL 문법의 형태가 나타난다. 빨간 색으로 적은 글씨가 해당 GraphQL 쿼리의 REST api 형태일 것이다.
  • 테스트 1
  • GraphQL은 오버페칭과 언더페칭에 대한 해결말고도 모든 것이 type을 가지고 있다는 것, 그리고 자동완성 등의 장점을 가진다.
  • 위의 그림을 보면 우리는 allFilms에서 필요한 두 가지를 선택했고, 그리고 더 자세히 살펴보면 films라는 array에서 필요한 것을 정해서 리퀘스트했다.
  • 테스트 2

profile
Working Abroad ...

0개의 댓글

관련 채용 정보