Crie um esquema GraphQL
Crie um esquema GraphQL para disponibilizar dados para consultas GraphQL.
Antes de Iniciar
Função necessária: Graphql_schema_admin ou admin
Procedimento
- Navegar até Tudo > Serviços web do sistema > GraphQL > APIs GraphQL.
- Selecione Novo.
-
Preencha estes 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 Namespace do esquema para evitar conflitos com esquemas com o mesmo nome. Ativo Opção para ativar ou desativar o esquema GraphQL. Esquema Definição de esquema que adere ao formato SDL GraphQL. Deve ser uma sintaxe GraphQL válida. Caso contrário, as 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:
na 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 resolução para mapear o tipo para um GlideRecord da tabela Incidente. Usando o.
na origema diretiva mapeia os campos no tipo de incidente paravaloroudisplay_valueNo 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 } -
Em Segurança preencha os campos.
Campo Descrição Requer autenticação Selecione esta opção para exigir autenticação para acessar o esquema. Limpar esta opção torna o esquema disponível publicamente. Requer autorização de ACL Selecione esta opção para exigir autorização de ACL de toda a API. Em ACLs Selecione ACLs com o tipo GraphQL. Para usar a autorização de ACL somente para caminhos específicos, deixe esta opção desmarcada e especifique o nível para avaliar as ACLs em Profundidade da ACL do caminho campo.
SNC interno Selecione esta opção se o esquema exigir a função interna do SNC. Esta opção aparecerá somente se o plug-in Explicit Roles (com.glide.explicit_roles) estiver habilitado. Profundidade da ACL do caminho Especifique o nível da API GraphQL ao qual as ACLs serão aplicadas. Definir a profundidade do caminho como 3 ou menos usa menos recursos e ajuda a retornar respostas de consulta. Para especificar as ACLs a serem usadas para o caminho, você deve criar uma ACL com o tipo GraphQL e adicionar o caminho de API exato que começa com o namespace do esquema no Nome campo. Por exemplo: /<planet>/<findAll>/<name> . Curingas não são compatíveis. Para obter mais informações, consulte Configure an ACL rule.
Nota:. ACLs O campo se aplica a toda a API e é independente das ACLs aplicadas a caminhos específicos.ACLs Selecione ACLs com o tipo GraphQL para verificar as consultas de entrada. As ACLs selecionadas se aplicam a toda a API. Esta opção aparecerá somente se Requer autorização de ACL selecionado. 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. - Salve o formulário.
- Opcional:
Crie um script de resolução para definir qual valor o esquema retorna quando um componente consulta um campo.
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 mapeia para um GlideRecord da tabela Incidente. Se você não criar um mapeamento de resolvedor para o campo Anotações de trabalho, o sistema pesquisará na fonte de dados do objeto primário, que é o GlideRecord da tabela Incidente, um campo Anotações de trabalho e atribuirá o valor associado.
- Selecione a guia Resolvedores de script GraphQL e selecione Novo .
-
Preencha o formulário.
Campo Descrição Nome Nome do resolvedor. Esquema Namespace do 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 global env objeto: - GetArguments() Retorna os argumentos do campo anterior.
- GetSource() Retorna o objeto primário.
Este script tem acesso ao GlideRecord.
Este exemplo retorna um registro do usuário tabela 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); - Selecione Enviar.
- Opcional:
Defina os resolvedores de tipo para seu esquema para resolver interfaces e uniões em tipos concretos.
- Selecione a guia Resolvedores de tipo de script GraphQL e selecione Novo .
-
Preencha o formulário.
Campo Descrição Esquema Namespace do esquema somente leitura. Tipo A interface ou o tipo de 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 união e interface. Funções disponíveis no global env objeto: - 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.
- Selecione Enviar.
- Opcional:
Mapeie o resolvedor e digite os registros do resolvedor para campos no esquema.
Este mapeamento informa ao sistema qual valor retornar quando um componente consulta um campo.
- Selecione a guia Mapeamentos de Resolvedor de Script GraphQL e selecione Novo .
-
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 do esquema somente leitura. - Selecione Enviar.