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 |