GraphQL

Hyun·2025년 1월 27일

frontend 필요 지식

목록 보기
9/9
post-thumbnail

GraphQL

API를 위한 쿼리 언어이며 타입 시스템을 사용해 쿼리를 실행하는 서버사이드 런타임이다. GraphQL은 특정한 데이터베이스나 특정한 스토리지 엔진과 관계되어 있지 않다.

Query language: SQL에서 사용하는 쿼리문과 동일. 내가 원하는 데이터를 얻기 위해 질의하는 컴퓨터 언어

GraphQL은 RESTful API가 잘 사용되고 있었던 2012년에 개발되었다고 하는데 왜 개발 되었을까?

  • 하나의 엔드 포인트
  • 쿼리에 따른 다른 응답
  • 원하는 데이터만! 받는 것이 가능하다. (react-query를 사용할 때 select로 원하는 데이터를 선택하는걸 안할 수 있어서 좋은 거 같다.)
  1. 하나의 엔드 포인트

Rest API는 여러 엔드포인트를 가져서 각 엔드포인트마다 동일한 응답을 반환해준다. 즉 원하는 데이터를 제공하는 엔드포인트로 요청을 해야 원하는 응답을 받을 수 있다.

REST API
→ example.com/class
→ example.com/class/{반 index}
→ example.com/class/{반 index}/students
→ example.com/class/{반 index}/students/{학생 index}

하지만 이렇게 되면 관리해야하는 엔드포인트가 많아지고, 많은 엔드포인트들의 노출을 막기 위해 추가적인 처리가 필요하다.

Rest API를 사용해보면 알겠지만 엔드포인트로 요청했을때 내가 원하는 데이터만이 아닌 해당 엔드포인트에서 제공하는 모든 정보를 응답으로 받아야 한다. 즉 불필요한 데이터로 인해 응답 사이즈가 커지게 된다.

  1. 쿼리에 따른 응답
    하지만 GraphQL은 쿼리문을 이용해 원하는 데이터를 응답으로 받을 수 있다.

GraphQL 장점

  1. http 요청 횟수 줄이기 가능
    RESTful의 경우 필요한 데이터 별로 요청 해야하고, 필요한 데이터들이 부분적으로 나눠서 개발되어 있다면 그만큼 요청 횟수가 늘어난다. 
    하지만 GraphQL은 원하는 정보를 하나의 쿼리에 모두 담아 요청 할 수 있다.

  2. http 응답 사이즈 줄이기 가능
    앞서 말했던 불필요한 데이터들을 모두 받아야 했던 문제를 쿼리문으로 해결이 가능하다.

GraphQL 단점

  1. 고정된 요청과 응답만 필요할 때에는 query로 인해 요청의 크기가 Restful보다 커질 수 있다.
  2. 캐싱이 REST보다 복잡하다.
  3. 파일 업로드 구현 방법이 정해져있지 않아 직접 구현해야 한다.

결론적으로 graphQL은 REST가 가지는 한계 때문에 개발된 GraphQL이지만, REST를 완벽히 대체할 순 없고, 이번에도 마찬가지로 서비스에 맞춰 사용하는 것이 옳다.

이번에 GraphQL에 대해 알아보게 된 이유는 imdb api를 이용해서 프로젝트를 한번 제작해보려고 하는데 graphQL을 통해 api 요청하는 방법이 기술되어 있어서 한번 찾아보게 되었다. 이 외에도 graphQL을 사용하는 api들이 상당히 있다.

0개의 댓글