GraphQL이란?
GraphQL은 API용 쿼리 언어.
클라이언트가 필요한 것을 정확히 요청할 수 있는 능력을 제공.
특정 언어에 종속되지 않고 GraphQL spec을 이행하기만 한다면 어떤 언어를 사용하든 가능하다.
GraphQL은 왜 생겨나게 된 것일까?
REST API 문제를 해결하기 위해 만들어 졌다.
API는 서버와 통신하기 위해 만들어진 인터페이스.
클라이언트가 서버에서 데이터를 얻기위해 통신할 때 해당 통신은 API를 이용하여 이뤄진다.
가장 유명한 API는 REST API.
REST API는 여러개의 고유한 URL을 활용하여 각기 다른 데이터를 제공한다.
데이터는 JSON 포멧으로 제공한다.
이렇게 API에 데이터를 요청할 때 매번 새로운 URL을 생성하는 방식을 REST라고 한다.
하지만 REST API는 큰 2가지 문제점을 갖고 있고 이를 해결하기 위해 GraphQL이 생겨났다.
REST API의 2가지 문제점과 GraphQL이 극복하는 방법
1) Over Fetching
URL을 요청하는 방식이라 클라이언트가 필요한 데이터보다 더 많은 데이터를 가져오는 문제.
실제 필요한 정보만 특정하여 요청한다면 DB가 일을 많이 할 필요도 없고
서버와 클라이언트 간의 이동해야하는 데이터도 커지지 않기 때문에 로딩 시간을 줄일 수 있다.
GraphQL은 쿼리 언어이기 때문에 정확하게 필요한 정보만 요청할 수 있게 해준다.
2) Under Fetching
URL을 요청하는 방식이라 클라이언트가 필요한 데이터보다 적은 양의 데이터를 가져오는 문제.
REST를 사용한다면 1개의 URL에 정보가 부족할 시 각기 다른 URL로 요청할 필요가 있다.
즉 2개의 URL을 연속해서 접속해야하고 이는 로딩시간 증가로 이어질 것이다.
GraphQL은 쿼리로 정확히 원하는 것만 요청할 수 있기 때문에 2개의 각기 다른 요청을 보낼 필요가 없다.
1개의 쿼리에 2개의 정보를 한꺼번에 요청할 수 있게 된다.