GraphQL

클라이언트는 필요한 필드를 쿼리로 선언한다

REST가 URL 중심으로 리소스를 나눈다면 GraphQL은 schema, query, resolver를 중심으로 요청과 응답 모양을 맞춥니다.

Schema

타입 계약

서버가 제공하는 타입, 필드, 입력값, 반환 형태를 정의합니다.

Query

필드 선택

클라이언트는 화면에 필요한 필드만 요청 문서에 적습니다.

Resolver

데이터 연결

각 필드가 데이터베이스나 서비스에서 값을 가져오는 방법을 구현합니다.

Result

응답 검증

요청 모양과 같은 구조의 JSON이 반환되는지 확인합니다.

REST와 다르게 봐야 할 항목

Mutation

데이터 변경은 mutation으로 분리해 입력 타입과 결과 타입을 명시합니다.

Fragment

반복되는 필드 묶음은 fragment로 재사용해 쿼리 중복을 줄입니다.

N+1

필드별 resolver가 많아질수록 배치 로딩과 캐싱 전략이 필요합니다.

복잡도 관리

GraphQL은 화면별 데이터 모양이 자주 달라질 때 좋지만, schema와 권한, 쿼리 비용 제한을 함께 설계해야 합니다.