INTEGRITY Документация

Интроспекция

Cloudflare GraphQL API имеет динамическую схему и предоставляет более 70 наборов данных в рамках зон и аккаунтов. Мы постоянно расширяем этот список и заменяем существующие наборы более функциональными альтернативами.

Чтобы решить вопрос со схемой, GraphQL предоставляет интроспекция ↗ механизм. Он входит в спецификацию GraphQL и позволяет исследовать граф датасетов и полей.

Результаты интроспекции содержат обзор ВСЕХ доступных узлов и полей, их описаний и статуса устаревания.

Хотя в GraphQL есть query, subscription, а также mutation операции, Cloudflare GraphQL API поддерживает только query операцию.

Описание и бета-режим

В описаниях наравне со сведениями о том, какие данные раскрывает узел или поле, указывается, работает ли он в режиме Beta. Узлы (или поля) в режиме Beta предназначены для тестирования и изучения и обычно доступны только клиентам с более объёмными тарифными планами. Не полагайтесь на бета-узлы данных, поскольку они могут быть изменены или удалены без предварительного уведомления.

Устаревание

Интроспекция предоставляет информацию о статусе устаревания. Cloudflare использует её, чтобы уведомлять о планах замены. Если указана дата прекращения поддержки, перейдите на замещающий узел (узлы) до этой даты, чтобы избежать перебоев в работе.

Доступность

Некоторые узлы могут быть доступны для запросов только отдельным пользователям. Дополнительные сведения см. в настройки узел, где приведены подробности о доступности и индивидуальных лимитах для конкретного узла.

Изучите документацию

Самый удобный способ исследовать схему через интроспекцию: использовать документационный обозреватель который обычно является частью клиента GraphQL (например, GraphiQL, Altair и т. д.).

Также это можно сделать вручную с помощью __schema узел с нужными директивами.

Типичный запрос интроспекции
{
	__schema {
		queryType {
			name
		}
		mutationType {
			name
		}
		subscriptionType {
			name
		}
		types {
			...FullType
		}
		directives {
			name
			description
			locations
			args {
				...InputValue
			}
		}
	}
}
fragment TypeRef on __Type {
	kind
	name
	ofType {
		kind
		name
		ofType {
			kind
			name
			ofType {
				kind
				name
				ofType {
					kind
					name
					ofType {
						kind
						name
						ofType {
							kind
							name
							ofType {
								kind
								name
							}
						}
					}
				}
			}
		}
	}
}
fragment InputValue on __InputValue {
	name
	description
	type {
		...TypeRef
	}
	defaultValue
}
fragment FullType on __Type {
	kind
	name
	description
	fields(includeDeprecated: true) {
		name
		description
		args {
			...InputValue
		}
		type {
			...TypeRef
		}
		isDeprecated
		deprecationReason
	}
	inputFields {
		...InputValue
	}
	interfaces {
		...TypeRef
	}
	enumValues(includeDeprecated: true) {
		name
		description
		isDeprecated
		deprecationReason
	}
	possibleTypes {
		...TypeRef
	}
}

Подробности о том, как отправить запрос GraphQL с помощью curl, см. в Выполнение запроса GraphQL с помощью curl.