유연한 데이터 요청:
GraphQL은 클라이언트가 필요한 데이터를 직접 지정할 수 있어 과도한 데이터를 받지 않고 필요한 데이터만 효율적으로 가져올 수 있다.
이는 네트워크 대역폭을 절약하고 성능을 향상시킬 수 있다.
단일 엔드포인트:
GraphQL은 하나의 엔드포인트를 사용하여 모든 데이터를 요청할 수 있다.
이는 여러 개의 API 엔드포인트를 호출하는 대신 하나의 엔드포인트에서 모든 데이터를 가져 올 수 있다.
불필요한 네크워크 요청과 오버헤드(처리시간 및 메모리 등이 추가적으로 사용되는 현상)를 줄인다.
타입 체크:
GraphQL은 타입체크로 인해 런타임 오류를 방지할 수 있도록 도와 준다.
스키마를 기반으로 각 필드의 타입이 명시되어 있고 client가 잘못된 타입의 데이터를 요청하면 오류를 발생시킨다.
데이터:
REST API는 client가 미리 정의된 엔드포인트를 호출하여 데이터를 요청한다.
이로 인해 client가 필요한 데이터의 양을 예측하기 어렵다.
때로는 중복된 데이터를 받거나 필요한 데이터를 받지 못하는 경우가 생긴다.
네트워크 오버헤드:
여러 개의 엔드포인트를 호출하여 데이터를 가져온다.
이로 인해 여러 번의 네트워크 요청이 발생 할 수 있다. => 오버헤드 발생
clinet 측 유연성 제한:
서버가 정의한 데이터 구조에 맞춰 데이터를 받아야 하기 때문에 client가 필요하지 않은 데이터를 받거나 여러번의 요청을 통해 데이터를 얻어야 한다.
버전 관리의 어려움:
엔드포인트에 버전 번호를 포함하여 API의 버전을 관리 해야 한다.
업데이트할 때마다 새로운 버전을 만들어야 한다.