← Аналитика / analytics / graphql-api / features / discovery
Интроспекция
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.