InfoGrab DocsInfoGrab Docs

백엔드 GraphQL API 가이드

백엔드 GraphQL API 가이드 관련 내용을 설명합니다.

백엔드 GraphQL API 가이드 # 이 문서는 [GitLab GraphQL API](/19.1/api/graphql/)의 백엔드를 구현하는 엔지니어를 위한 스타일 및 기술 지침을 담고 있습니다. REST API와의 관계 # GraphQL 및 REST API 섹션 을 참조하세요. 버전 관리 # GraphQL API는 버전이 없습니다(versionless) . 다중 버전 호환성 # GraphQL API는 버전이 없지만, 업데이트 간 하위 호환성 을 고려해야 하며, 이것이 일부 사용자에게 사이드바가 로드되지 않은 문제 와 같은 인시던트를 유발할 수 있습니다. 완화 방법 # 인시던트의 위험을 줄이기 위해, GitLab Self-Managed 및 GitLab Dedicated에서는 @gl_introduced 디렉티브를 사용하여 노드가 도입된 GitLab 버전을 백엔드에 알릴 수 있습니다. 이렇게 하면 쿼리가 이전 버전의 백엔드에 도달했을 때, 해당 미래 노드가 쿼리에서 제거됩니다. 이 방법은 GitLab.com에서 발생하는 문제를 완화하지는 못합니다. 새로운 GraphQL 필드는 프론트엔드 이전에 백엔드가 먼저 GitLab.com에 배포되어야 합니다. 예를 들어 다음과 같이 임의의 필드에 @gl_introduced 디렉티브를 사용할 수 있습니다: fragment otherFieldsWithFuture on Namespace { webUrl otherFutureField @gl_introduced(version: "99.9.9") } query namespaceWithFutureFields { futureField @gl_introduced(version: "99.9.9") namespace(fullPath: "gitlab-org") { name futureField @gl_introduced(version: "99.9.9") ...otherFieldsWithFuture } } 응답: { "data": { "futureField": null, "namespace": { "name": "Gitlab Org", "futureField": null, "webUrl": "http://gdk.test:3000/groups/gitlab-org", "otherFutureField": null } } } 다음의 경우에는 이 디렉티브를 사용하지 않아야 합니다: 인수(Arguments): 실행 가능한 디렉티브는 인수를 지원하지 않습니다. 프래그먼트(Fragment): 대신 프래그먼트 노드에서 디렉티브를 사용하세요. 쿼리 또는 객체 내의 단독 미래 필드, 예를 들어: query fetchData { futureField @gl_introduced(version: "99.9.9") } 응답: { "errors": [ { "graphQLErrors": [ { "message": "Field must have selections (query 'fetchData' returns Query but has no selections. Did you mean 'fetchData