ETC

GraphQL

hjkang

GraphQL이란?

  • 페이스북에서 만든 쿼리 언어(데이터베이스에 접근할 수 있는 언어)로 기존에 사용하고 있는 REST API의 한계를 극복하고자 나온 것으로 REST API를 대체할 수 있다.

REST API의 한계

  • 리소스마다 엔드포인트를 갖게 되고, 애플리케이션의 규모가 커질수록 엔드포인트가 늘어나므로 관리가 힘들어진다.
  • 응답의 형태가 정해져있어서 필요한 정보만 부분적으로 요청하는 것이 힘들다.
  • 단순한 서비스에서는 좋지만 복잡한 서비스인 경우 Over-Fetching과 Under-Fetching이 발생한다.

Over-Fetching이란?

  • 예를 들어, 사용자들의 데이터를 조회하는 /users 라는 엔드포인트가 있다고 가정해보자

  • 이와 같은 데이터가 있을 때, 1번 유저의 username만 받고 싶어도 유저 이름만을 반환하는 api를 따로 만드는게 아니라면 GET /users/1 과 같이 요청한다.
  • 이때 이 요청에 대한 응답은 username뿐만 아니라 age, email 등의 필요하지 않은 정보들까지 반환되기 때문에 리소스의 낭비라고 볼 수 있고, 이걸 Over-Fetching이라고 칭한다.

Under-Fetching이란?

  • 예를 들어, 사용자가 인스타그램을 실행시켰다고 가정해보자
  • 그러면 피드, 사용자 프로필, 알림 등 요청을 여러 번 보내야 한다.

  • 이처럼 요청에 맞는 데이터를 보여주기 위해 여러 API를 호출하는 걸 Under-Fetching이라고 한다.

 

GraphQL

  • 클라이언트가 필요한 데이터만 반환할 수 있으니 Over-Fetching 해결
  • 많은 정보를 한 번의 요청으로 해결할 수 있으니 Under-Fetching 해결

요청 쿼리

반환 데이터

 

REST API와 GraphQL의 비교

  • 이처럼 REST API를 사용하면 리소스마다 엔드포인트를 가지고 있는데 GraphQL은 단 하나의 엔드포인트만을 사용한다.

GraphQL의 기본 용어

  • query: 데이터를 읽는데(R) 사용
  • field: 쿼리에 있는 값(속성)
  • mutation: 데이터를 변조(CUD)할때 사용
  • schema: 받거나 보낼 데이터에 대한 설명
  • type: 객체 타입
  • resolver: 스키마가 실제 어떤 동작을 하는지에 대한 처리


'ETC' 카테고리의 다른 글

Excel 그룹화 (부분합)  (0) 2023.02.15
Chrome에서 Code Snippets 사용하기  (0) 2023.02.15
PWA  (0) 2022.11.09
인텔리제이 단축키  (0) 2022.11.09
AWS, Azure를 GCP와 비교  (0) 2022.10.21