왜 GraphQL을 써야 하는가?


  1. 강력한 스키마 타입

    서버에 스키마가 존재해야 클라이언트에서 해당 스키마를 사용할 수 있게 설계되어 있다. 일치하는 스키마가 없을 경우 에러가 뜨기 때문에 잘못된 스키마 정의 때문에 개발자가 고생할 필요가 없다. 또한 API 명세가 자동으로 생성되기 때문에 따로 작성할 필요가 없는 것 역시 장점이다.

  2. Overfetching과 Underfetching 방지

    RESTful API에서 자주 발생하는 문제를 꼽으라면 단연 Overfetching과 Underfetching이 뽑힌다. 고정된 endpoint로 요청을 보내기 때문에 정해진 데이터를 받아와야 하고 그 과정에서 문제가 발생한다. GraphQL에서는 원하는 데이터를 지정할 수 있기 때문에 위의 문제를 해결할 수 있다.

  3. 생산적이다

    GraphQL의 라이브러리인 Apollo에서는 chaching , realtime 또는 optimistic UI updates 를 자유롭게 활용할 수 있다. 이를 통해 다른 추가 작업 없이 보다 효율적이고 생산적으로 개발을 진행할 수 있다.

  4. API 방식

    GraphQL은 Schema Stitching이라는 기법을 통해 여러 API를 하나의 API로 만들 수 있다. 따라서 기존의 API가 여러 번 요청을 보내야 했던 일에 대해 하나의 요청으로 해결할 수 있게 만들어준다.

  5. 넓은 생태계

    많은 사람이 GraphQL을 사용, 사랑하는 만큼 충분히 넓은 개발 생태계가 있다. 즉 정보를 얻을 수 있는 방법이 많으며 좋은 라이브러리가 많이 존재한다!

Apollo란


GraphQL은 하나의 형식, 즉 명세일 뿐이기 때문에 이를 구현할 방법이 필요한데 그 중 하나가 Apollo이다.

Apollo는 Backend와 Frontend 모두를 지원하며 사용하기 쉽고 많은 기능들을 제공하기 때문에 널리 쓰인다.

GraphQL 사용법 정리


Queries and Mutations

Field

GraphQL은 객체에 대한 특정 필드를 요청하는 것이 매우 간단하다. 다음의 예제를 보자.

{
  hero {
    name
  }
}
{
  "data": {
    "hero": {
      "name": "R2-D2"
    }
  }
}

쿼리와 결과가 정확히 동일한 형태인 것을 알 수 있는데 이는 서버에서 클라이언트가 요청하는 필드를 정확히 알고 있기 때문이다.