Classe NowGraphQLService - iOS

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 3 min. de leitura
  • A classe NowGraphQLService fornece funções que permitem fazer solicitações usando consultas GraphQL em relação aos dados em sua instância ServiceNow por meio da GraphQL REST API.

    Tabela 1. Propriedades
    Nome Tipo Descrição
    configuração NowServiceConfiguration Definições de configuração fornecidas quando o serviço foi inicializado.

    NowGraphQLService - executar (consulta: GraphQLQuery) lances assíncronos

    Executa a consulta GraphQL especificada.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    consulta Cadeia de caracteres Consulta GraphQL a ser executada.
    Tabela 3. Retornos
    Tipo Descrição
    Dados Retornado quando o método é bem-sucedido. Dados de consulta gerados a partir da consulta especificada.
    NowDataError Lançado quando o método falha.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: o código ou a mensagem de erro do provedor de token de acesso.
        • accessTokenRetrievalFailed
        • userSessionError(_ erro: erro)

      Lançado quando há um erro no token de acesso.

    • attachmentValidation

      Lançado quando um anexo falha na validação.

    • BadResponse(statusCode: HTTPStatusCode)
      • HTTPStatusCode: Código de status recebido da instância.

      Lançado quando uma solicitação retorna uma resposta inesperada

    • canDecodeModel(DecodingError)
      • DecodingError: erro de decodificação detectado.

      Lançado quando um modelo Codable não pode ser decodificado do JSON.

    • canDecodeProperty(tipo: qualquer, de: cadeia de caracteres)
      • type: tipo encapsulado para decodificar a partir de uma cadeia de caracteres.
      • from: cadeia de caracteres a ser decodificada para o tipo especificado.

      Lançado quando um valor encapsulado em cadeia de caracteres não pode ser decodificado do JSON.

    • can'tEncodeModel(EncodingError)
      • EncodingError: erro de codificação detectado.

      Lançado quando um modelo Codable não pode ser codificado para JSON.

    • canParseResponse

      Lançado quando uma resposta da instância não pode ser analisada no formato esperado.

    • URL inválido

      Lançado quando um URL não pode ser formado. Por exemplo, se a cadeia de caracteres contiver caracteres que são ilegais em um URL ou for uma cadeia de caracteres vazia.

    • ausenteAttachmentMetadata

      Lançado quando o cabeçalho de metadados do anexo está ausente.

    • ausenteConfiguraçãoDeServiço

      Lançado quando uma configuração de serviço esperada está ausente.

    • ausenteSysID

      Lançado quando um parâmetro sys_id esperado está ausente.

    • network(NetworkServiceError)
      • genericError(cadeia de caracteres)
      • operaçãoCancelada
      • serviço​Desabilitado
      • serverError(Erro)
      • systemError (Erro)

      Lançado quando um serviço de rede encontrou um erro.

    O exemplo de código a seguir mostra como chamar este método.

    private func fetchArticles() async throws -> [Article] { 
        guard let graphQLService = graphQLService else { 
            throw ArticleListError.invalidGraphQLService 
        }         
    
        do {
            let data = try await graphQLService.execute(GraphQLQuery(query: recentlyPublishedQuery))
            let articles = try dataToArticleList(data)
        } catch let error as NowDataError {
            throw ArticleListError.fetchError(error)
        } catch {
            throw error
        }
    } 
      
    private let recentlyPublishedQuery = 
    """ 
    
    {
      GlideRecord_Query {
        kb_knowledge(queryConditions: "active=true^ORDERBYpublishedDESC" pagination: { limit: 10, offset: 0 }) {
          _results { 
            sys_id {
              value
            },
            number {
              displayValue
            },
            short_description {
              displayValue
            },
            author {
              displayValue
            }
            published {
              displayValue
            }
          }
        }
      }
    }
    """

    NowGraphQLService - execute(consulta: GraphQLQuery, conclusão: @escaping (resultado<Data, NowDataError> ))

    Executa a consulta GraphQL especificada.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    consulta Cadeia de caracteres Consulta GraphQL a ser executada.
    conclusão @escaping (resultado<Data, NowDataError> ) Manipulador de conclusão a ser executado após a conclusão da consulta.
    Valores de retorno:
    • Sucesso: retorna dados de consulta.
    • Erro: NowDataError
    Tabela 5. Retornos
    Tipo Descrição
    Nenhum

    gqlService.execute(GraphQLQuery(query: myQuery)) { result in 
      switch result { 
      case .success(let data): 
        // use data 
      case .failure(let error): 
        // handle error 
      } 
    }

    NowGraphQLService - init(configuration: NowServiceConfiguration, coreServiceProvider: NowCoreServiceProviding)

    Cria um NowGraphQLService com base nos parâmetros especificados.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    configuração NowServiceConfiguration Parâmetros de configuração a serem usados ao inicializar o serviço, como o ID do pacote da aplicação que se integra ao serviço e o URL da instância ServiceNow que o NowGraphQLService deseja acessar.
    coreServiceProvider NowCoreServiceProviding Opcional. Provedor de serviço principal.
    Nota:
    Atualmente, este parâmetro é necessário, embora seja mostrado como opcional.

    Padrão: nulo

    NowGraphQLService - fornecedor (para consulta: GraphQLQuery)

    Cria um fornecedor para solicitar dados GraphQL.

    Nota:
    Este método foi descontinuado. Em vez disso, você deve usar a implementação assíncrona/aguardar do método.
    Tabela 7. Parâmetros
    Nome Tipo Descrição
    para consulta GraphQLQuery Cadeia de caracteres de consulta GraphQL a ser executada.
    Tabela 8. Retornos
    Tipo Descrição
    Qualquer publicador<Data, NowDataError> Sucesso: conjunto de dados GraphQL.

    Falha: NowDataError

    O exemplo de código a seguir mostra como chamar esta função.

    private func fetchArticles() -> AnyPublisher<[Article], ArticleListError> {
      guard let graphQLService = graphQLService else {
        return Fail(error: .invalidGraphQLService).eraseToAnyPublisher()
      }
            
      return graphQLService.publisher(for: GraphQLQuery(query: recentlyPublishedQuery))
        .mapError({ dataError -> ArticleListError in
          .fetchError(dataError)
        })
        .flatMap(dataToArticleList)
        .eraseToAnyPublisher()
    }