모범사례

HTTP

GraphQL은 하나의 엔드포인트 HTTP를 통해 제공된다.

JSON

GraphQL 서비스는 일반적으로 JSON으로 응답하나 GraphQL 명세상 필수는 아니다.

JSON은 대부분 텍스트이기 때문에 GZIP으로 잘 압축된다. GZIP으로 제공하여 더 좋은 성능을 제공할 수 있다.

그렇기에 프로덕션 GraphQL 서비스는 GZIP을 활성화 하는 것을 권장한다.

GZIP으로 보내기 위해 헤더에서 Accept-Encoding: gzip로 보낸다.

버저닝

GraphQL 스키마의 업데이트를 위한 도구를 제공하여 버전 관리를 피하는 것에 대한 의견이 있다.

GraphQL은 명시적으로 요청된 데이터만 반환하므로 새로운 타입과 필드를 통해 새로운 기능 추가가 가능하다. 이로 인해 버전 없는 API를 제공하는 방법으로 이어진다.

Nullability

명시적 선언을 하지 않는한 기본적으로 null을 포함하지 않는다. 다만, GraphQL의 모든 필드는 기본적으로 nullable하다.

요청이 반드시 필요할 경우 GraphQL에서 non-null 타입을 사용하여 null이 아님을 보장할 수 있다.