🧐 🤔 컴퓨터 옆 메모장 🙄 😙

GraphQL 소개

2024. 5. 30. Kim Evergood이가 씀

GraphQL

API용 쿼리 언어이다.

등장 배경 및 필요성

페이스북의 개발자들이 페이스북 앱을 구축하면서 필요성을 느껴서 개발했다.#

클라이언트에서 필요한 데이터와 서버의 쿼리 간의 간극이 있을 때 언더패치, 오버패치가 자주 발생한다.

특징

  • 쿼리의 형태가 계층적이다.
  • 강타입
  • 인터페이스만을 제공한다.(특정 스토리지나 언어, 프레임워크 등에 종속적이지 않음)

장점

  • 오버패치 예방: 클라이언트에서 정확히 필요한 데이터만을 골라서 요청할 수 있다.
  • 언더패치 예방: 여러 쿼리를 한 번에 요청할 수 있다.
  • 쿼리의 형태와 응답의 형태가 같으므로 클라이언트가 응답의 형태를 바로 알 수 있다.
  • 새 필드나 타입 추가시 클라이언트의 수정이 요구되지 않는다.

단점

  • REST API에 비하면 학습장벽이 있고 서버 구현이 복잡하다.
  • 클라이언트에서 쿼리 구성에 더 많은 신중함이 요구된다.

쿼리 및 응답 예시

쿼리 예
{
    book(id: "book1") {
        title
        summary
        author {
            name
            age
        }
    }
}
응답 예
{
    "data": {
        "book": {
            "title": "왠지 엄청 재밌는 책",
            "summary": "왠지 엄청 재미있다.",
            "author": {
                "name": "김영선",
                "age": 534
            }
        }
    }
}

REST API와 비교

GraphQL이 추천되는 경우

  • 오버패칭과 언더패칭 이슈를 줄이며 유연한 방식으로 데이터를 가져와야 함
  • 여러 리소스를 한 번에 요청해야 함
  • 데이터 사이 관계가 복잡함

REST API가 더 권장되는 경우

  • 간단한 CRUD 작업만이 필요함
  • 캐싱이 중대사항임

참고

728x90