Introspecção com GraphQL

GraphQL é uma linguagem de consultas com base em um sistema de tipos Os tipos GraphQL definem quais objetos são suportados, quais campos estão associados a um objeto e o que pode ser consultado e como, o que é definido pelo esquema GraphQL Para poder usar APIs do GraphQL de forma eficaz, é essencial ter um bom entendimento do modelo de dados do Supply Chain Intelligence Suite .

Antes de Iniciar

  • Se você for novo no GraphQL, conclua o tutorial do GraphQL até se sentir confortável com o básico da API do GraphQL .
  • Instale um cliente REST, como Insomnia.
  • Certifique-se de que seu navegador esteja configurado corretamente para a ferramenta GraphiQL

Sobre essa tarefa

Uma ótima maneira de aprender o esquema do modelo do Supply Chain Intelligence Suite é usando a introspecção do GraphQL . A introspecção do esquema pode ajudar sempre que você tiver uma questão sobre qualquer parte do esquema, como quais objetos estão definidos, quais campos estão associados a um tipo, quais são os valores de uma enumeração, quais tipos de consultas são suportados, e quais parâmetros podem ser usados para uma consulta..

Você aprende as tarefas a seguir:

  • Como localizar todos os tipos suportados, como objetos, interfaces, enum.
  • Como localizar mais detalhes de cada tipo, como campos para um objeto ou valores de uma enumeração.
  • Quais consultas são suportadas e detalhes da consulta, como parâmetros.
  • Quais mutações são suportadas..
  • Como construir uma consulta do GraphQL com base nos resultados da introspecção

É possível usar o explorador de documentação no GraphiQL

A ferramenta GraphiQL usa a lógica de introspecção para construir um explorador de esquema interativo na IU. Navegue para a interface GraphiQL colando essa URL em seu navegador:

https://api.ibm.com/infohub/run/graph/na

E observe o link Docs :

Documentos do GraphiQL

Quando você clica no link Docs , o GraphiQL envia uma solicitação de introspecção de esquema para a API do GraphQL e, em seguida, analisa a resposta em um modelo de objeto de documento (DOM) no qual é possível navegar. O Documentation Explorer é então renderizado, juntamente com uma lista dos objetos de nível superior no modelo, que neste exemplo são query e mutation.

GraphiQL Explorador de Documentação mostrando os tipos raiz de consulta e mutação

Nessa visualização, é possível realizar drill down para explorar todos os objetos e seus atributos Por exemplo, após realizar drill down na consulta, a visualização mostra o valor BusinessEventInput do atributo eventParams para a consulta:

GraphiQL mostrando os campos que são usados na entrada BusinessEvent

Procedimento

  1. Introspecte todos os tipos que são definidos no esquema no GraphQL editor visual.
    1. Navegue para o editor visual GraphiQL inserindo a seguinte URL em um navegador:
      https://api.ibm.com/infohub/run/graph/na
    2. Cole a seguinte consulta GraphQL no lado esquerdo do editor e clique em Executar.
      query {
       __schema {
      	    types {
      		  name
      		  description
      		  kind
      		}
      		queryType {
      		  fields {
      			name
      			description
      		  }
      		}
         }
       }
      Após a conclusão da consulta, é possível ver a resposta da consulta no lado direito do editor.. Examine a resposta e encontre alguns exemplos de OBJECT, INTERFACE e ENUM. Os tipos OBJECT são a base das APIs do GraphQL Cada OBJECT possui campos, que expõem dados e podem ser consultados por nome INTERFACEs são uma lista de campos que podem ser implementados por tipos OBJECT. Os tipos ENUM são conjuntos de valores discreto.
      Um exemplo de uma resposta de esquema
    3. Navegue até o final da resposta e visualize a lista de consultas que são suportadas.
    4. Opcional: No editor visual GraphiQL , use o link no canto superior direito para inspecionar a definição de esquema.
  2. Execute a mesma consulta de esquema GraphQL em Insomnia.
    1. Abrir Insomnia, iniciar uma nova solicitação denominada Get Intelligence Suite schema info.
    2. Selecione POST na lista e insira a seguinte URL:
      https://api.ibm.com/infohub/run/graph/na
    3. Na seção do corpo da solicitação, selecione GraphQL e copie e cole a mesma consulta da etapa anterior na caixa CONSULTA
    4. Desativar a verificação de certificado SSL em Insomnia
    5. Clique em Enviar e consulte a resposta na seção de resposta da solicitação:
      A resposta deve ser idêntica à recebida na etapa anterior.
  3. Introspect os detalhes do tipo
    1. Insira a seguinte consulta em Insomnia:
        query {
          __type(name: "BusinessObjectsCursor") {
        	...FullType
          }
        }
      
        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
        			  }
        			}
        		  }
        		}
        	  }
        	}
          }
        }
      
    2. Examine a resposta que é recebida
      BusinessObjectsCursor é um tipo OBJECT que implementa INTERFACE Cursor. Ele possui três campos definidos: edges, pageInfoe totalCount. O campo edges é uma LIST de OBJECT BusinessObjectEdge Conhecer a INTERFACE pode ajudar a aperfeiçoar consultas com diferentes tipos OBJECT nas respostas.
      resposta do tipo
    3. Substituir o nome do tipo na consulta por alguns outros tipos selecionados na Etapa 1 ou 2, executar a consulta novamente e verificar as respostas para entender as definições de tipo.
  4. Tipos de introspecção que estão associados a uma interface
    Embora a consulta mostrada na Etapa 3 possa ser usada para qualquer tipo, você pode preferir respostas mais simples para tipos específicos, como INTERFACE ou ENUM. É possível obter uma lista limpa de OBJECTS que implementam uma INTERFACE específica Na perspectiva do cliente da API do GraphQL , saber a INTERFACE que um OBJECT implementa pode ajudar a aperfeiçoar as respostas de consulta.
    1. Use a seguinte consulta para localizar todos os OBJECTS que implementam a mesma INTERFACE.
      query {
      __type(name: "Cursor") {
        name
        kind
        description
        possibleTypes {
          name
          kind
          description
        }
      }
      }  
      A resposta mostra todos os Cursor OBJECTS definidos em Supply Chain Intelligence Suite.
      resposta de consulta da interface
    2. Selecione outra interface identificada na Etapa 1 ou 2, coloque-a na consulta e execute-a para localizar todos os OBJETIVOS associados.
  5. Introspecte valores ENUM.
    O Supply Chain Intelligence Suite usa vários ENUMs no esquema Um tipo ENUM define um conjunto de valores discretos, por exemplo, o Supply Chain Intelligence Suite tipo ENUM BusinessObjectType fornece uma lista de todos os objetos de negócios definidos no esquema. Esta etapa mostra uma consulta para obter a lista de valores de um ENUM.
    1. Copie e cole a consulta a seguir na ferramenta de sua escolha e execute a consulta.
      query {
      __type(name: "BusinessObjectType") {
        name
        kind
        description
        enumValues {
          name
          description
        }
      }
      }
      Verifique o resultado para ver todos os tipos de objetos listados em ENUM BusinessObjectType. Esta lista mostra quais objetos de dados de negócios são suportados no API.
      resposta de consulta ENUM
    2. Substitua o tipo por outro tipo ENUM que você selecionou na Etapa 1 ou 2 e execute novamente a consulta para ver a lista de valores para esse ENUM.
  6. Definições de consulta introspecção.
    Todas as consultas GraphQL suportadas são definidas em um tipo especial Query no esquema. É possível usar a consulta definida na Etapa 4 para obter as informações relacionadas.
    1. Execute a consulta GraphQL a seguir em Insomnia:
        query {
          __type(name: "Query") {
        	...QueryType
          }
        }
      
        fragment QueryType on __Type {
          fields {
        	name
        	description
        	type {
        		name
        		kind
        	}
        	args {
        	  name
        	  description
        	  type {
        		  name
        		  kind
        	  }
        	}
          }
        }
      Examine a resposta.. Cada consulta suportada é mostrada como um campo na resposta Atualmente, um total de quatro consultas são definidas no esquema.. Uma das consultas é businessObjectEvents, que retorna BusinessEventCursor. Essa consulta pode ter cinco parâmetros diferentes, um dos quais é advancedFilter do tipo OBJECT BooleanExp
      resposta de definição de consulta
  7. Definições de mutação introspectiva.
    Mutação é outro tipo de esquema que define todas as mutações que são suportadas pela API. Ao contrário das APIs de consulta GraphQL que são usadas para buscar dados, as APIs de mutação GraphQL são fornecidas para modificar dados no servidor. Substitua Query por Mutation na consulta que é usada na etapa 6e efetue check-out de todas as definições de mutação InforHub , ou seja, que tipo de manipulação de dados são suportadas por meio da API do Supply Chain Intelligence Suite GraphQL .
  8. Construir seu Supply Chain Intelligence Suite.
    Agora você sabe como localizar todos os tipos suportados e como localizar os detalhes de cada tipo.. As consultas de amostra foram fornecidas para INTERFACE, ENUM, Consulta, Mutação, que contêm informações suficientes para iniciar a construção de sua primeira consulta do Supply Chain Intelligence Suite GraphQL
    1. Use a consulta na etapa 6 para localizar a definição de uma consulta para businessRuleEvents.
    2. Use a consulta na etapa 3 para localizar os detalhes do tipo de resposta
    3. Use a consulta na etapa 3 para localizar os detalhes de cada parâmetro de consulta..
    4. Com base nos resultados das etapas anteriores, construa uma consulta GraphQL para businessRuleEvents..