GraphQL
과 REST API
는 모두 웹 API를 구현하는 방법이다.
REST API
URL을 이용해서 endpoint를 정의하고, HTTP 메소드를 사용해서 요청의 의도를 나타낸다.
클라이언트는 endpoint에 요청을 보내고 서버는 해당 요청을 처리하고 JSON, XML 등의 형식으로 데이터를 반환한다.
데이터 모델이 복잡한 경우 API를 사용하기 위해 많은 요청을 보내야할 수 있어 대역폭을 낭비할 수 있다.
GraphQL
단일 API endpoint를 사용하여 데이터를 요청하고 반환한다.
클라이언트는 필요한 데이터의 구조와 필드를 정의해서 서버에 요청하고, 반환되는 데이터는 클라이언트가 요청한 필드에만 해당된다. -> 복잡한 데이터 모델의 요청을 쉽게 처리할 ㅜㅅ 있다.
캐싱을 위한 HTTP 캐시 헤더를 지원하지 않아 서버측 캐싱이나 프록시 캐싱을 구현하기 어렵다.
GraphQL
은 REST API
보다 더 유연하고 효율적인 데이터 요청 및 반환 방식을 제공한다. (클라이언트가 필요한 데이터의 구조와 필드를 정의할 수 있으므로). 서버에서는 중복되거나 불필요한 데이터를 반환하지 않아도 된다. 또한, 데이터 요청 및 반환에서 발생할 수 있는 오류를 줄일 수 있다.
REST API는 단순한 데이터 모델이나 대용량 데이터 처리르 필요로 하는 경우에 적합하다. 반면에 GraphQL은 복잡한 데이터 모델이나 다양한 클라이언트를 지원해야 하는 경우에 적합하다.