GraphQL은 하나의 엔드포인트 HTTP를 통해 제공된다.
Web Request Pipeline
미들웨어 스택을 통과하는 파이프라인 모델 사용
요청이 파이프라인을 통과할 때 응답으로 검사, 변환, 수정, 종료 할 수 있다.
HTTP 엔드포인트 핸들러에서와 동일한 세션과 사용자 정보에 접근할 수 있다.
URIs, Routes
GraphQL의 개념 모델은 엔티티 그래프다.
GraphQL의 엔티티는 URL로 식별되지 않는다.
HTTP Methods, Headers, and Body
GraphQL이 기본적으로 POST로 동작하지만, HTTP의 get method를 이용할 수도 있다.
GraphQL 서비스는 일반적으로 JSON으로 응답하나 GraphQL 명세상 필수는 아니다.
JSON은 대부분 텍스트이기 때문에 GZIP으로 잘 압축된다. GZIP으로 제공하여 더 좋은 성능을 제공할 수 있다.
그렇기에 프로덕션 GraphQL 서비스는 GZIP을 활성화 하는 것을 권장한다.
GZIP으로 보내기 위해 헤더에서 Accept-Encoding: gzip
로 보낸다.
GraphQL 스키마의 업데이트를 위한 도구를 제공하여 버전 관리를 피하는 것에 대한 의견이 있다.
GraphQL은 명시적으로 요청된 데이터만 반환하므로 새로운 타입과 필드를 통해 새로운 기능 추가가 가능하다. 이로 인해 버전 없는 API를 제공하는 방법으로 이어진다.
명시적 선언을 하지 않는한 기본적으로 null
을 포함하지 않는다. 다만, GraphQL의 모든 필드는 기본적으로 nullable하다.
요청이 반드시 필요할 경우 GraphQL에서 non-null
타입을 사용하여 null이 아님을 보장할 수 있다.