🌳 고급 고급
GraphQL이 뭔가요?
쉽게 이해하기
GraphQL은 맞춤형 도시락 주문과 같아요. REST API가 정해진 세트 메뉴라면, GraphQL은 '밥은 적게, 치킨은 2조각, 샐러드는 많이' 같은 식으로 원하는 것만 골라 담을 수 있어요. 필요한 것만 받으니까 낭비가 없죠.
핵심 정리
클라이언트가 필요한 데이터만 정확히 요청할 수 있는 API 쿼리 언어예요.
자세히 알아보기
GraphQL은 페이스북이 만든 API 쿼리 언어예요. REST API의 단점을 보완하기 위해 탄생했죠. REST에서는 여러 엔드포인트를 호출해야 하는 데이터를, GraphQL에서는 하나의 요청으로 가져올 수 있어요.
예를 들어 사용자 정보와 그 사용자의 최근 게시글, 그리고 각 게시글의 댓글을 가져온다고 해봐요. REST API라면 /users/:id, /users/:id/posts, /posts/:id/comments 같은 여러 요청이 필요해요. 하지만 GraphQL에서는 한 번의 쿼리로 모든 걸 가져올 수 있어요.
GraphQL의 핵심은 '클라이언트가 필요한 데이터를 정의한다'는 거예요. 서버는 스키마만 제공하고, 클라이언트가 원하는 필드를 골라서 요청해요. 과다한 데이터를 받거나(overfetching), 데이터가 부족해서 추가 요청하는(underfetching) 문제가 없어요.
타입 시스템도 큰 장점이에요. API 문서가 자동으로 생성되고, 요청이 잘못되면 실행 전에 에러를 잡을 수 있어요. GraphQL Playground나 Apollo Studio 같은 도구로 쉽게 테스트할 수 있어요.
하지만 캐싱이 REST보다 어렵고, 파일 업로드나 복잡한 권한 관리는 구현이 까다로워요. GitHub, Shopify, Netflix 같은 서비스들이 GraphQL을 사용하고 있어요.