본문 바로가기

프로그래밍 강의 메모

GraphQL 개요

https://youtu.be/N-81mS2vldI

https://graphql.org/

 

GraphQL | A query language for your API

Evolve your APIwithout versions Add new fields and types to your GraphQL API without impacting existing queries. Aging fields can be deprecated and hidden from tools. By using a single evolving version, GraphQL APIs give apps continuous access to new featu

graphql.org

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개의 정보를 한꺼번에 요청할 수 있게 된다.