GraphQL에 대해 설명해주세요
GraphQL
은 API에서 데이터의 스키마를 제공한다.
여러 리소스 요청을 하나의 쿼리로 통합할 수 있다.
REST API와 비교
둘 다 HTTP를 사용한다. URL을 통해 요청을 만들고 둘다 JSON 응답값을 반환한다.
GraphQL은 사용하길 원하는 자원을 명시한다.
이때 REST API와 달리 자원을 URL에 명시할 필요가 없다.
ex) GET /books/123
REST API의 경우 데이터가 복잡하면 다수의 요청을 보내는 문제가 발생한다. 하지만 GraphQL은 스키마를 통해 쉽게 추가적인 데이터를 받는 복잡한 쿼리를 보낼 수 있다.
REST API는 다른 라이브러리가 필요하지 않다. 반면 GraphQL은 클라이언트와 서버 모두에 지원하는 도구가 필요하다. 매우 간단한 API 작업에서는 비용이 드는 작업이다.
GraphQL은 캐싱이 다소 어렵다. REST API는 브라우저, CDN, Proxy, Web Server 등에 널리 영향을 끼치는 HTTP GET을 사용한다.
반면 GraphQL은 기본적으로 HTTP POST를 사용한다. 이는 HTTP 캐싱의 사용을 막는다.
GraphQL은 클라이언트에 필요한 데이터만을 가져오기 때문에 위험할 수도 있다.
GPT로 문장 정리하기
GraphQL에 대해 설명해줘
- 웹 애플리케이션에서 클라이언트와 서버 간의 효율적인 데이터 교환을 위해 사용되는 API
- 클라이언트가 필요한 데이터를 정확하게 요청하고 서버가 정확한 응답을 주도록 설계
- 주요 특징과 개념
- 단일 엔드포인트: 단일 엔드포인트 제공하며 클라이언트는 해당 엔드포인트를 통해 원하는 데이터를 요청.
- 유연한 쿼리 언어: 클라이언트는 원하는 데이터를 정확하게 명시할 수 있는 쿼리 작성. "오버 페칭" 또는 "언더 패칭" 문제 해결.
- 타입 시스템: 서버에서 지원하는 데이터 모델과 상호작용할 때 타입이 일치하지 않는 오류 방지
- 리졸버 함수: 서버에서는 클라이언트의 쿼리에 응답하기 위해 리졸버 함수 구현. 리졸버 함수는 각각의 필드에 대한 데이터 반환.
- 실시간 데이터: 실시간 데이터를 처리할 수 있는 기능을 제공.
키워드 정리
- 쿼리 언어
- 단일 엔드포인트