Pular para o conteúdo

Gerar JSON de introspeção GraphQL — Numio

Converte SDL de GraphQL no resultado JSON de uma query de introspecção padrão usando @graphql-codegen/introspection. A saída contém um objeto __schema de nível superior com os tipos raiz, todos os tipos (incluindo os embutidos) e as diretivas.

Gerar um schema.json para ferramentas que esperam JSON de introspecção em vez de SDL, como alguns plugins de IDE e geradores de cliente.

GraphQL Schema

Introspection JSON

Quando usar

  • Gerar um schema.json para ferramentas que esperam JSON de introspecção em vez de SDL, como alguns plugins de IDE e geradores de cliente.
  • Ver como o tipo de um campo é envolvido nos kinds NON_NULL e LIST nos dados de introspecção.

Como usar

  1. Cole o SDL do schema no editor GraphQL Schema.
  2. Aguarde o JSON no painel Introspection JSON; mesmo um schema de um único campo gera cerca de mil linhas.
  3. Copie ou baixe o JSON e salve-o, por exemplo como schema.json.

Schema GraphQL

type Query {
  hello(name: String): String!
}

JSON de introspecção

{
  "__schema": {
    "queryType": {
      "name": "Query"
    },
    "mutationType": null,
    "subscriptionType": null,
    "types": [
      {
        "kind": "OBJECT",
        "name": "Query",
        "description": null,
        "fields": [
          {
            "name": "hello",
            "description": null,
            "args": [
              {
                "name": "name",
                "description": null,
                "type": {
                  "kind": "SCALAR",
                  "name": "String",
                  "ofType": null
…

Detalhes e limitações

Escalares embutidos (String, Boolean), os tipos de introspecção (__Schema, __Type, __Field e outros) e as diretivas embutidas (include, skip, deprecated, specifiedBy) são sempre incluídos.

O JSON não vem envolvido em uma chave "data"; ele começa direto com __schema.

A conversão roda em um Web Worker no seu navegador. Esta página só recebe um schema; ela não consulta nenhum endpoint ativo.

FAQ

Posso obter o JSON de introspecção a partir de uma URL?

Não. A página converte o SDL que você cola; ela não envia queries de introspecção a nenhum servidor. Exporte primeiro o SDL do seu servidor e cole aqui.

Campos depreciados são incluídos?

Sim. Cada campo e valor de enum é listado com isDeprecated e deprecationReason, então campos marcados com @deprecated aparecem com isDeprecated: true.

Por que a saída é tão grande para um schema pequeno?

Resultados de introspecção descrevem todo o sistema de tipos, incluindo os escalares embutidos, os metatipos de introspecção e as definições de diretivas, não apenas os seus próprios tipos.

Especificações e referências