메타(전 페이스북)에서 정의한 Server API 를 만드는 방법론 중 하나
동시에 Query Language 이기도 합니다.
트리 구조로 결과를 받기 위해 그래프를 탐색하는 쿼리 언어(혹은 방법론)입니다.
HTTP 를 통해 API 서버로 요청을 보내고 응답을 받습니다.
데이터 결과를 JSON 으로 받습니다.
조회 대상 schema 가 유효한지 검사합니다.
Overfetch : 필요 없는 데이터까지 과도하게 제공
Underfetch : endpoint 가 필요한 정보를 부족하게 제공, 여러개의 endpoint에 요청이 강제
클라이언트 구조 변경 시 엔드포인트 변경 또는 데이터 구조 수정이 필요합니다.
GraphQL | REST API | |
---|---|---|
리소스 | Schema | HTTP URI |
작업 유형 | Query, Mutation 타입 | HTTP Method |
리소스 형태 정의와 데이터 요청 방법 | 분리 | 연결 |
여러 리소스 접근시 요청 횟수 | 여러 번 | 한 번 |
요청 방법 | 필드에 대한 Resolver 호출 | 엔드포인트에 정의된 핸들링 함수 호출 |
하나의 endpoint 요청 ✅
Over & Under Fetch ❌
클라언트 구조 변경시 데이터 구조 수정 필요 ❌
강력한 Playground GUI (POSTMAN 과 비슷)
GraphQL 학습 비용 소요
HTTP POST 메소드만 사용하기에 캐싱 복잡 (Apollo 엔진, 영속 쿼리 필요)
고정된 요청과 응답만 필요할때 Query 로 인해 요청 크기 비교적 큽니다.
참조 : 코드스테이츠 프론트엔드 부트캠프, 카카오 기술 블로그