하나의 언어나 프로그램이 아닌, REST API 같은 웹 인터페이스 이다.
그래프 QL은 2012 페이스북에 의해 만들어졌고, 2015년 페이스북이 이 graph ql 명세를 오픈소스로 만들었다.
그저 형식이기 때문에, 따로 프로그램이 있지 않으나 implementation 은 받을 수 있는데,
명세를 따라 규칙을 실제 코드로 구성한 것이다.
rest api 는 이해하기 쉬우며, 여러개의 url 을 이용해 작동한다. url 은 모두 고유하며, 각기 다른 데이터를 제공한다.
보통 rest api uri의 경우에는 기기가 uri 에 접속하여 서버에 데이터를 요청해 기기, 브라우저로 json포맷으로 제공된 데이터를 가져와
사용자에게 보여준다.
이런 uri 는 인간이 직접 접속하는게 아닌, 기기나 브라우저가 url 에 접속해 서버에 데이터를 요청하는 형태를 지니는데,
보통 검색에 있어 검색값을 입력하면 uri 에 쿼리문이 붙어 요청된다. 이렇게 매번 새로운 uri를 생성하는 것도 rest 방식이라고 할 수 있다.
rest api는 두가지 문제점을 가지는데 over fetching 과, under fetching 이다.
over fetching 이란 내가 필요한 데이터보다 더 많은 데이터를 가져 온 것이다.
uri를 통해 http 메소드와 함께 요청을 하게 되면, 응답으로 불필요한 정보까지 전부 받게된다.
하지만 필요한 정보만 특정하여 요청한다면 db가 일을 더 많이 할 필요도 없고, 서버와 휴대폰 간의 이동 데이터가 커지지 않기 때문에 로딩 시간도 획기적으로 줄 것이다.
그래프 ql은 본질적으로 쿼리언어이기때문에, 이렇게 정확히 필요한 정보만 요청할 수 있게 해준다.
movie/upcoming/uri 를 입력한 경우를 생각해보자. 우리가 필요한게 영화제목 뿐이라 해도, 응답으로 제목, 개봉일, 인기도등 불필요한 값을 전부 받아오게 된다.
이상황에서 그래프 ql을 통해 쿼리를 보내면
{
upcoming {
title
}
}
요청으로
{
“upcoming”: [
{“title”: “the northman”},
{“title”: “dune”},
{“title”: “dr.strange”},
]
} 을 받아오게 된다.
그리고 movie/upcoming 과 movie/nowplaying 에 접근하는 경우를 생각해보자. 디바이스는 각기 다른 2개의 요청을 보내야한다.
하지만 그래프 ql은 원하는 것만 보내기 떄문에 하나의 쿼리에 upcoming 과 nowplaying 에 대한 정보를 요청할 수 있으며,
필요한 데이터를 가져오지도 않으니 오버페칭이 일어나지 않는다.
graph ql에는 멋진 기능들이 있어, api 만드는 것을 즐겁게 해주는데, 실습과 검색을 통해 살펴보자.
참고
https://www.youtube.com/watch?v=N-81mS2vldI
'Domain 지식들 > Graph QL' 카테고리의 다른 글
그래핀 - 장고(1) 컨텐츠 테이블 (0) | 2022.12.02 |
---|
댓글