Criar um esquema GraphQL

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 4 min. de leitura
  • Crie um esquema GraphQL para disponibilizar dados para consultas GraphQL.

    Antes de Iniciar

    Função necessária: graphql_schema_admin ou admin

    Procedimento

    1. Navegar até Todos > Serviços web do sistema > GraphQL > APIs GraphQL.
    2. Clique em Nova.
    3. Preencha esses campos.
      Campo Descrição
      Nome Nome do esquema.
      Namespace do esquema Deve ser exclusivo no nome da aplicação.
      Aplicação Aplicação somente leitura da qual o esquema faz parte.
      Namespace da aplicação Somente leitura. Funciona com o namespace do esquema para evitar conflitos com esquemas com o mesmo nome.
      Ativo Marcado se ativo, desmarcado se não estiver ativo.
      Esquema Definição de esquema que adere ao formato GraphQL SDL. Deve ser uma sintaxe válida do GraphQL. Caso contrário, mensagens de erro serão exibidas ao salvar para indicar o problema de sintaxe.
      Nota:
      Os seguintes recursos do GraphQL não são compatíveis:
      • Operações de assinatura
      • Tipos escalares personalizados

      Você pode usar esta diretiva em seu esquema:

      @origem: Mapeia um campo GraphQL para o valor de uma propriedade do objeto primário. Se o campo tiver um script de resolvedor separado, o sistema usará o registro para o qual ele resolve em vez do objeto primário.

      Este exemplo define um tipo de objeto Incidente no esquema e usa um script de resolvedor para mapear o tipo para um GlideRecord da tabela Incidente. O uso da diretiva @source mapeia os campos no tipo de incidente para o valor ou display_value no GlideRecord do incidente.

      type Incident {
          id: String @source(value: "sys_id.value")
          active: Boolean @source(value: "active.display_value")
          state: String @source(value: "state.display_value")    
          priority: String @source(value: "priority.display_value")
          severity: String
          description: DisplayableString
          resolvedBy: User @source(value: "resolved_by.value")
          openedBy: User @source(value: "opened_by.value")
          child_incidents: String
          opened_at: String
          resolved_at: String
          closed_at: String
          work_notes: String    
          comments: String @source(value: "comments.display_value")
          parent_incident: String
      }
    4. Selecione a guia Segurança e preencha o formulário.
      Campo Descrição
      Requer autenticação Marcado se o esquema exigir autenticação, desmarcado se o esquema não exigir autenticação e estiver disponível publicamente.
      Requer SNC interno Aparece somente se o plug-in Funções explícitas estiver habilitado. Marcado se o esquema exigir a função interna do SNC, desmarcado se o esquema não exigir a função interna do SNC.
      Requer autorização de ACL Marcado se o esquema exigir autorização da ACL, desmarcado se o esquema não exigir autorização da ACL.
      ACLs Aparece somente se Requer autorização de ACL estiver marcado. Verifica as consultas de entrada em relação às ACLs do tipo GraphQL.
      Nota:
      A API retorna mensagens de erro claras para usuários que não têm acesso a um esquema ou que não estão autenticados quando a API requer autenticação para acessar.
    5. Salve o formulário.
    6. Opcional: Crie um script de resolvedor para definir qual valor o esquema retorna quando um componente consulta um campo específico.
      Se você não definir um resolvedor para um campo, a consulta retornará qualquer valor de campo correspondente do tipo de objeto primário. Por exemplo, suponha que você tenha um tipo de objeto Incidente em seu esquema com um campo de anotações de trabalho. O tipo de objeto Incidente tem um resolvedor que é mapeado para um GlideRecord da tabela Incidente. Se você não criar um mapeamento de resolvedor para o campo de anotações de trabalho, o sistema pesquisará a fonte de dados do objeto primário, que é o GlideRecord da tabela Incidente, para um campo de anotações de trabalho e atribuirá o valor associado.
      1. Selecione a guia Resolvedores de script da GraphQL e clique em Novo.
      2. Preencha o formulário.
        Campo Descrição
        Nome Nome do resolvedor.
        Esquema Namespace de esquema somente leitura.
        Aplicação Aplicação somente leitura da qual o esquema faz parte.
        Script Defina o valor retornado quando o campo for consultado. Funções disponíveis no objeto env global:
        • getArguments(): retorna os argumentos do campo anterior.
        • getSource(): retorna o objeto primário.

        Este script tem acesso ao GlideRecord.

        Este exemplo retorna um registro da tabela Usuário quando o campo associado é consultado:

        (function process(/*ResolverEnvironment*/ env) {
        
            var userid = env.getArguments().id != null ? env.getArguments().id : env.getSource();
            var now_GR = new GlideRecord('sys_user');
            gr.addQuery('sys_id', userid);
            gr.queryO;
            return gr;
        
        })(env);
      3. Clique em Enviar.
    7. Opcional: Defina os resolvedores de tipo do seu esquema para resolver interfaces e uniões em tipos concretos.
      1. Selecione a guia GraphQL Scripted Typeresolvers e clique em Novo.
      2. Preencha o formulário.
        Campo Descrição
        Esquema Namespace de esquema somente leitura.
        Tipo O tipo de interface ou união definido no esquema.
        Aplicação Aplicação somente leitura da qual o esquema faz parte.
        Script Defina o valor retornado para os tipos de união e interface. Funções disponíveis no objeto env global:
        • getArguments(): retorna os argumentos do campo anterior.
        • getObject(): retorna o objeto primário.
        • getTypeName(): retorna o nome da interface ou do tipo de união.

        Este script tem acesso ao GlideRecord.

      3. Clique em Enviar.
    8. Opcional: Mapeie o resolvedor e os registros de typeresolver para campos no esquema.
      Esse mapeamento permite que o sistema saiba qual valor retornar quando um componente consultar um campo específico.
      1. Selecione a guia Mapeamentos do Resolvedor de Script da GraphQL e clique em Novo.
      2. Preencha o formulário.
        Campo Descrição
        Caminho Caminho para o campo no esquema que você deseja mapear.
        Resolvedor Resolvedor a ser usado para definir os dados retornados pelo campo.
        Aplicação Aplicação somente leitura da qual o esquema faz parte.
        Esquema Namespace de esquema somente leitura.
      3. Clique em Enviar.