type graphiql data schema graphql

schema - graphiql - input type graphql



Obtener GraphQL todo el esquema de consulta (4)

Quiero obtener el esquema del servidor. Puedo obtener todas las entidades con los tipos pero no puedo obtener las propiedades.

Consiguiendo todos los tipos:

query { __schema { queryType { fields { name type { kind ofType { kind name } } } } } }

Cómo obtener las propiedades por tipo:

__type(name: "Person") { kind name fields { name type { kind name description } } }

¿Cómo puedo obtener todos los tipos con las propiedades en solo 1 solicitud? O incluso mejor: ¿Cómo puedo obtener todo el esquema con los mutadores, enumeraciones, tipos ...


Esta es la consulta que utiliza GraphiQL (captura de red):

query IntrospectionQuery { __schema { queryType { name } mutationType { name } subscriptionType { name } types { ...FullType } directives { name description locations args { ...InputValue } } } } 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 } } fragment InputValue on __InputValue { name description type { ...TypeRef } defaultValue } 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 } } } } } } } }


Puede usar la consulta de introspección de GraphQL-JS para obtener todo lo que le gustaría saber sobre el esquema:

import { introspectionQuery } from ''graphql'';

Si solo desea la información para los tipos, puede usar esto:

{ __schema: { types: { ...fullType } } }

Que utiliza el siguiente fragmento de la consulta de introspección:

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 } } fragment InputValue on __InputValue { name description type { ...TypeRef } defaultValue } 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 } } } } } } } } `;

Si eso parece complicado, es porque los campos pueden ser arbitrariamente envueltos en no Nulos y Listas, lo que significa que técnicamente, incluso la consulta anterior no refleja el esquema completo si sus campos están envueltos en más de 7 capas (lo que probablemente no sea el caso) ).

Puedes ver el código fuente de introspectionQuery here .



Actualizar

Usar graphql-cli ahora es el flujo de trabajo recomendado para obtener y actualizar su esquema.

Los siguientes comandos te ayudarán a comenzar:

# install via NPM npm install -g graphql-cli # Setup your .graphqlconfig file (configure endpoints + schema path) graphql init # Download the schema from the server graphql get-schema

Incluso puede escuchar los cambios de esquema y actualizar continuamente su esquema ejecutando:

graphql get-schema --watch

En caso de que solo quiera descargar el esquema GraphQL, use el siguiente enfoque:

La forma más fácil de obtener un esquema GraphQL es usar la herramienta CLI get-graphql-schema .

Puedes instalarlo vía NPM:

npm install -g get-graphql-schema

Hay dos formas de obtener su esquema. 1) Formato GraphQL IDL o 2) Formato de consulta de introspección JSON.

Formato IDL de GraphQL

get-graphql-schema ENDPOINT_URL > schema.graphql

Formato de introspección JSON

get-graphql-schema --json ENDPOINT_URL > schema.json

o

get-graphql-schema -j ENDPOINT_URL > schema.json

Para obtener más información, puede consultar el siguiente tutorial: Cómo descargar el esquema IDQL de GraphQL