
Facebook에서 개발한 데이터 질의 언어(Query Language)로, API의 효율적인 데이터 요청 및 관리를 위해 만들어짐
웹 및 모바일 애플리케이션 개발을 위해 만들어졌으며
데이터를 효율적으로 관리하고 사용자 경험을 향상시키는 데 초점을 맞춘 기술
기존의 REST API는
특정 기능을 위해 여러 번 API를 호출해야 하며 요청에 맞는 응답을 제공하려면 새로운 API를 만들어야하므로 API의 유지보수가 어려우며
클라이언트가 필요로 하지 않는 데이터 까지 전송하여 네트워크 자원을 낭비하고 클라이언트마다 다른 엔드포인트를 추가로 만들어 개발과 유지 보수를 어렵게 만듬
GraphQL은 단 하나의 엔드포인트(Endpoint)만 제공하며, 한 번의 요청으로 필요한 모든 정보를 가져올 수 있음
1️⃣ 1개의 Endpoint
단 하나의 Endpoint를 제공함으로써 요청을 보낼 때는 정해진 한 군데로만 요청을 보내면 되고 그 외의 API를 신경쓸 필요가 없어져 유지보수가 용이해짐
2️⃣ 필요한 데이터만 가져오는것이 가능
GraphQL은 원하는 데이터만 가져올 수 있어
REST API에서 발생하는 Overfetching 및 Underfetching 문제를 해결할 수 있음
👉 Overfetching: 필요한 데이터보다 더 많은 데이터를 불필요하게 요청하여 네트워크 및 클라이언트 리소스가 낭비되는 문제
👉 Underfetching: 필요한 데이터를 얻기 위해 여러 번 요청을 보내서 네트워크 요청이 많아지고 이에 따라 성능이 저하됨
1️⃣ HTTP 캐싱
RESTful API는 엔드포인트마다 HTTP 캐싱 전략을 설정할 수 있지만
GraphQL은 하나의 엔드포인트를 사용하기 때문에 기존의 HTTP 캐싱 방식을 그대로 적용 불가능
2️⃣ 서버 성능
REST API는 정해진 응답을 반환하지만,
GraphQL은 클라이언트가 원하는 데이터 구조를 요청할 수 있어, 복잡한 중첩 쿼리(Nested Query)로 인해 성능이 저하될 수 있음
👉 GraphQL
👉 REST API