REST의 오버페칭/언더페칭 문제
REST는 엔드포인트마다 고정된 데이터 구조를 응답합니다. 화면에 필요한 필드가 일부뿐이어도 전체 응답을 받는 오버페칭이 흔하고, 반대로 화면 하나를 그리기 위해 여러 엔드포인트를 순차 호출해야 하는 언더페칭도 자주 발생합니다.
GraphQL의 접근 방식
GraphQL은 단일 엔드포인트에서 클라이언트가 필요한 필드를 쿼리로 직접 명시해 요청합니다. 서버는 요청된 필드만 조합해 응답하므로 오버/언더페칭 문제가 구조적으로 줄어들고, 여러 리소스를 한 번의 요청으로 가져올 수 있습니다.
어느 쪽을 선택할까
REST는 구조가 단순하고 HTTP 캐싱을 그대로 활용할 수 있어 공개 API나 단순 CRUD 서비스에 적합합니다. GraphQL은 클라이언트마다 필요한 데이터 형태가 다양한 대시보드·모바일 앱처럼 프론트엔드 요구사항이 자주 바뀌는 서비스에서 강점을 보입니다. 둘은 대립 관계가 아니라, 공개 API는 REST로 유지하면서 내부 프론트엔드용 집계 계층만 GraphQL로 구성하는 방식도 흔히 쓰입니다.