GraphQL API 병합 요청 체크리스트

GitLab GraphQL API는 상당한 복잡성을 가지고 있으므로 GraphQL 변경 사항이 포함된 병합 요청은 GraphQL에 대한 지식이 있는 사람이 검토하는 것이 중요합니다.

병합 요청에서 @gitlab-org/graphql-experts 그룹을 통해 누군가에게 도움을 요청하거나 Slack의 #f_graphql 채널에서 요청할 수 있습니다 (GitLab 팀원만 이용 가능).

GraphQL 쿼리는 다음에 대해 검토해야 합니다:

  • 브레이킹 변경
  • 인증
  • 성능

검토 기준

이는 포괄적인 목록이 아닙니다.

샘플 쿼리가 포함된 설명

설명에 설정 지침이 포함된 샘플 쿼리가 포함되어 있는지 확인하세요.

로컬 GDK 인스턴스에서 GraphiQL에서 쿼리를 실행해 보세요.

브레이킹 변경이 없음 (전체 사용 중단 주기 이후가 아닌 경우)

MR에서 브레이킹 변경에 대한 내용이 있는지 확인하세요.

기능이 실험으로 표시된 경우 즉시 브레이킹 변경을 할 수 있으며, 사용 중단 기간이 필요 없습니다.

자세한 내용은 사용 중단 및 제거 프로세스를 참조하세요.

다중 버전 호환성

다중 버전 호환성이 보장되는지 확인하세요.

이는 일반적으로 동일한 GraphQL 기능에 대한 프론트엔드 및 백엔드 코드가 동일한 릴리스에서 배포될 수 없다는 것을 의미합니다.

자세한 내용은 다중 버전 호환성을 참조하세요.

기술 문서 검토

생성된 API 문서의 변경 사항은 기술 작가의 검토가 필요합니다.

변경 로그

실험으로 표시되지 않은 공개적인 변경 사항은 변경 로그 항목이 필요합니다.

프레임워크 사용

GraphQL은 많은 구성 요소가 있는 프레임워크입니다. 프레임워크를 준수하는 것이 중요합니다.

  • 프레임워크의 구성 요소를 수동으로 호출하지 마세요. 예를 들어, 실행 중에 해결자를 직접 인스턴스화하지 말고 프레임워크가 이를 수행하도록 하세요.
  • MyResolver.single과 같이 해결자를 서브클래싱할 수 있습니다 (자세한 내용은 해결자 파생 참조).
  • 더 복잡한 인수 로직의 경우 ready? 메서드를 사용하세요 (자세한 내용은 해결자#ready의 올바른 사용 참조).
  • 더 복잡한 인수 검증을 위해 prepare 메서드를 사용하세요 (자세한 내용은 전처리 참조).

자세한 내용은 해결자 가이드를 참조하세요.

인증

적절한 인증이 준수되고 authorize :some_ability가 테스트되었는지 확인하세요.

자세한 내용은 인증 안내서를 참조하세요.

성능

다음 사항을 확인하세요:

적절한 유형 사용

예를 들어:

  • Ruby TimeDateTime 객체에 대한 TimeType
  • id 필드에 대한 글로벌 ID

자세한 내용은 유형을 참조하세요.

적절한 복잡성

쿼리 복잡성은 쿼리가 얼마나 비쌀 가능성이 있는지를 정량화하는 방법입니다. 쿼리 복잡성 제한은 스키마에 상수로 정의됩니다.

해당 호출이 비쌀 경우, 쿼리 복잡성이 이를 반영하도록 해야 합니다.

자세한 내용은 최대 복잡성, 필드 복잡성쿼리 제한을 참조하세요.

테스트

  • 리졸버(단위) 사양은 요청(통합) 사양을 선호하여 더 이상 사용되지 않습니다.

  • 우리의 프레임워크의 많은 측면은 resolve 메서드 외부에 있으며, 요청 사양만이 그들이 제대로 작동하도록 보장하는 유일한 방법입니다.

  • 모든 GraphQL 변경 MR은 이상적으로 API 사양에 대한 변경 사항을 포함해야 합니다.

자세한 내용은 테스트 가이드를 참조하세요.