NowAPIClasse de serviço - iOS

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 6 min. de leitura
  • . NowAPIService a classe fornece funções que permitem executar solicitações para um especificado ServiceNow REST API.

    Tabela 1. Propriedades
    Nome Tipo Descrição
    configuração NowServiceConfiguration Configuração de serviço a ser associada ao protocolo.

    NowAPIService - data(para endpoint: NowAPIEndpoint, queryItems: [Cadeia de caracteres], httHeaders: [Cadeia de caracteres], corpo: Dados, conclusão: NowDataError>)

    Solicita dados do especificado ServiceNow REST API e executa o manipulador de conclusão.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    para endpoint NowAPIEndpoint Objeto que contém ServiceNow Endpoint da REST API a ser acessado, incluindo o método HTTP, o caminho relativo para o endpoint, os parâmetros de caminho e se a autenticação é necessária.
    QueryItems Matriz Opcional. Parâmetros de consulta para o endpoint como pares de chave/valor.

    Padrão: Nil

    Cabeçalhos HTttttp Matriz Opcional. Cabeçalhos HTTP de solicitação exigidos pelo endpoint como pares de chave/valor.

    Padrão: Nil

    corpo Cadeia de caracteres Opcional. Parâmetros do corpo da solicitação.

    Padrão: Nil

    conclusão Escape (<DataResponse, NowDataError>) Manipulador de conclusão a ser executado após a conclusão da chamada da REST API.
    Valores de retorno para o manipulador de conclusão:
    • DataResponse que contém os dados retornados da chamada da REST API.
    • NowDataError
      • AccessToken(AccessTokenProviderError)
        • AccessTokenProviderErrorCódigo ou mensagem de erro do provedor do token de acesso.
          • AccessTokenRecupereToken
          • UserSessionError(_ erro: Erro)

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

      • AnexoValidação

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

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

        Acionado quando uma solicitação retorna uma resposta inesperada

      • CannotDecodeModel(DecodingError)
        • DecodingErrorErro de decodificação detectado.

        Lançado quando um modelo codificável não pode ser decodificado do JSON.

      • CannotDecodeProperty(tipo: Qualquer, de: Cadeia de caracteres)
        • type: Tipo encapsulado para decodificar a partir de uma cadeia de caracteres.
        • fromCadeia de caracteres a ser decodificada para o tipo especificado.

        Acionado quando um valor encapsulado de cadeia de caracteres não pode ser decodificado do JSON.

      • CannotEncodeModel(EncodingError)
        • EncodingErrorErro de codificação detectado.

        Lançado quando um modelo codificável não pode ser codificado para JSON.

      • CannotParseResponse

        Acionado quando uma resposta da instância não pode ser analisada em seu formato esperado.

      • URL inválida

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

      • MissingAttachmentMetadados

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

      • MissingServiceConfiguration

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

      • MissingSySID

        Acionado quando um parâmetro sys_id esperado está ausente.

      • Rede (NetworkServiceError)
        • GenericError (cadeia de caracteres)
        • OperaçãoCancelada
        • Serviço​desabilitado
        • ServerError (Erro)
        • SystemError (Erro)

        Disparado quando um serviço de rede encontrou um erro.

    Tabela 3. Retornos
    Tipo Descrição
    Nenhum(a)

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

    struct Endpoint: NowAPIEndpoint {
      let httpMethod: HTTPMethod
      let relativePath: String
      let requiresAuthentication: Bool
    }
    
    /// HTTP request method
    public enum HTTPMethod: CaseIterable {
        case options, get, head, post, put, patch, delete, trace, connect
    }
    let relativePath = “/api/now/account”
    let endPoint = Endpoint(httpMethod: HTTPMethod.get, relativePath: relativePath, requiresAuthentication: true)
    
    apiService.data(for: endPoint, queryItems: [“name”: “abel”], httpHeaders: httpHeaders, body: body.data(using: .utf8)) { [weak self] (result) in
      switch result {
        case .success(let response):
        // Data request successful
        case .failure(let error):
        // Data request failed, return NowDataError
        // .failure(error)
      }
    }
    

    NowAPIService - data(para endpoint: NowAPIEndpoint, queryItems: [Cadeia de caracteres], httpHeaders: [Cadeia de caracteres], body: Dados) lançamentos assíncronos

    Solicita dados do especificado ServiceNow REST API.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    para endpoint NowAPIEndpoint Objeto que contém ServiceNow Endpoint da REST API t O Acesso, incluindo o método HTTP, caminho relativo para o endpoint, parâmetros de caminho e se a autenticação é necessária.
    QueryItems Matriz Opcional. Parâmetros de consulta para o endpoint como pares de chave/valor.

    Padrão: Nil

    Cabeçalhos HTttttp Matriz Opcional. Cabeçalhos HTTP de solicitação exigidos pelo endpoint como pares de chave/valor .

    Padrão: Nil

    corpo Cadeia de caracteres Opcional. Solicitar bod parâmetro y. rs.

    Padrão: Nil

    Tabela 5. Retornos
    Tipo Descrição
    DataResponse Retornado quando o método é bem-sucedido. Dados da chamada da REST API.
    NowDataError Lançado quando o método falha.
    • AccessToken(AccessTokenProviderError)
      • AccessTokenProviderErrorCódigo ou mensagem de erro do provedor do token de acesso.
        • AccessTokenRecupereToken
        • UserSessionError(_ erro: Erro)

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

    • AnexoValidação

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

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

      Acionado quando uma solicitação retorna uma resposta inesperada

    • CannotDecodeModel(DecodingError)
      • DecodingErrorErro de decodificação detectado.

      Lançado quando um modelo codificável não pode ser decodificado do JSON.

    • CannotDecodeProperty(tipo: Qualquer, de: Cadeia de caracteres)
      • type: Tipo encapsulado para decodificar a partir de uma cadeia de caracteres.
      • fromCadeia de caracteres a ser decodificada para o tipo especificado.

      Acionado quando um valor encapsulado de cadeia de caracteres não pode ser decodificado do JSON.

    • CannotEncodeModel(EncodingError)
      • EncodingErrorErro de codificação detectado.

      Lançado quando um modelo codificável não pode ser codificado para JSON.

    • CannotParseResponse

      Acionado quando uma resposta da instância não pode ser analisada em seu formato esperado.

    • URL inválida

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

    • MissingAttachmentMetadados

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

    • MissingServiceConfiguration

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

    • MissingSySID

      Acionado quando um parâmetro sys_id esperado está ausente.

    • Rede (NetworkServiceError)
      • GenericError (cadeia de caracteres)
      • OperaçãoCancelada
      • Serviço​desabilitado
      • ServerError (Erro)
      • SystemError (Erro)

      Disparado quando um serviço de rede encontrou um erro.

    Os exemplos de código a seguir mostram como chamar este método.

    do {
        let dataResponse = try await apiService.data(for: endpoint, queryItems: queryItems, httpHeaders: httpHeaders, body: body)
        // Data request successful
    } catch {
        // Data request failed, NowDataError thrown
    }

    NowAPIService - data(para endpoint: NowAPIEndpoint, queryItems: [Cadeia de caracteres]? HttHeaders: [Cadeia de caracteres: Cadeia de caracteres]? Corpo: Dados? nulo)

    Solicita dados do especificado ServiceNow REST API.

    Nota:
    Este método foi descontinuado. Em vez disso, você deve usar a implementação async/await do método.
    Tabela 6. Parâmetros
    Nome Tipo Descrição
    para endpoint NowAPIEndpoint Objeto que contém ServiceNow Endpoint da REST API a ser acessado, incluindo o método HTTP, o caminho relativo para o endpoint, os parâmetros de caminho e se a autenticação é necessária.
    QueryItems Matriz Opcional. Parâmetros de consulta para o endpoint como pares de chave/valor.

    Padrão: Nil

    Cabeçalhos HTttttp Matriz Opcional. Cabeçalhos HTTP de solicitação exigidos pelo endpoint como pares de chave/valor.

    Padrão: Nil

    corpo Dados Opcional. Parâmetros do corpo da solicitação.

    Padrão: Nil

    Tabela 7. Retornos
    Tipo Descrição
    AnyPublisher<DataResponse, NowDataError> Sucesso: Dados retornados pela REST API.

    NowDataError

    • AccessToken(AccessTokenProviderError)
      • AccessTokenProviderErrorCódigo ou mensagem de erro do provedor do token de acesso.
        • AccessTokenRecupereToken
        • UserSessionError(_ erro: Erro)

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

    • AnexoValidação

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

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

      Acionado quando uma solicitação retorna uma resposta inesperada

    • CannotDecodeModel(DecodingError)
      • DecodingErrorErro de decodificação detectado.

      Lançado quando um modelo codificável não pode ser decodificado do JSON.

    • CannotDecodeProperty(tipo: Qualquer, de: Cadeia de caracteres)
      • type: Tipo encapsulado para decodificar a partir de uma cadeia de caracteres.
      • fromCadeia de caracteres a ser decodificada para o tipo especificado.

      Acionado quando um valor encapsulado de cadeia de caracteres não pode ser decodificado do JSON.

    • CannotEncodeModel(EncodingError)
      • EncodingErrorErro de codificação detectado.

      Lançado quando um modelo codificável não pode ser codificado para JSON.

    • CannotParseResponse

      Acionado quando uma resposta da instância não pode ser analisada em seu formato esperado.

    • URL inválida

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

    • MissingAttachmentMetadados

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

    • MissingServiceConfiguration

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

    • MissingSySID

      Acionado quando um parâmetro sys_id esperado está ausente.

    • Rede (NetworkServiceError)
      • GenericError (cadeia de caracteres)
      • OperaçãoCancelada
      • Serviço​desabilitado
      • ServerError (Erro)
      • SystemError (Erro)

      Disparado quando um serviço de rede encontrou um erro.

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

    struct Endpoint: NowAPIEndpoint {
        let httpMethod: HTTPMethod
        let relativePath: String
        let requiresAuthentication: Bool
    }
    
    /// HTTP request method
    public enum HTTPMethod: CaseIterable {
        case options, get, head, post, put, patch, delete, trace, connect
    }
    let relativePath = "/api/now/account"
    let endPoint = Endpoint(httpMethod: HTTPMethod.get, relativePath: relativePath, requiresAuthentication: true)
    
    // Using Combine
    apiService.data(for: Endpoint(httpMethod: httpMethod, relativePath: endpointPath, requiresAuthentication: requiresAuthentication), queryItems: queryItems, httpHeaders: httpHeaders, body: body.data(using: .utf8))
      .receive(on: DispatchQueue.main)
      .sink { [weak self] (comp) in
        if case let .failure(error) = comp {
          // Data request failed, return NowDataError
        }
      } receiveValue: { [weak self] (response) in
        // Data request successful
        self?.publish(data: response.data)
      }
      .store(in: &self.subscriptions)
    }