Classe NowAPIService - iOS

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 6 min. de leitura
  • A classe NowAPIService fornece funções que permitem executar solicitações para uma REST API ServiceNow especificada.

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

    NowAPIService - dados (para endpoint: NowAPIEndpoint, queryItems: [String: String], httpHeaders: [String: String], corpo: Data, conclusão: @escaping (Resultado<DataResponse, NowDataError> )

    Solicita dados da REST API ServiceNow especificada e executa o manipulador de conclusão.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    para endpoint NowAPIEndpoint Objeto que contém o endpoint da REST API ServiceNow 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.
    itens de consulta Matriz Opcional. Parâmetros de consulta para o endpoint como pares de chave/valor.

    Padrão: nulo

    httpcabeçalhos Matriz Opcional. Solicite cabeçalhos HTTP exigidos pelo endpoint como pares de chave/valor.

    Padrão: nulo

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

    Padrão: nulo

    conclusão @escaping (resultado<DataResponse, NowDataError> ) Manipulador de conclusão a ser executado após a conclusão da chamada de REST API.
    Retornar valores para o manipulador de conclusão:
    • Sucesso: DataResponse que contém os dados retornados da chamada de REST API.
    • Falha: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: O código ou a mensagem de erro do provedor de token de acesso.
          • accessTokenRetrievalFailed
          • userSessionError(_ error: 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 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.

      • canEncodeModel(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(Error)
        • systemError(Error)

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

    Tabela 3. Retorna
    Tipo Descrição
    Nenhum

    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 - dados (para endpoint: NowAPIEndpoint, queryItems: [String: String], httpHeaders: [String: String], corpo: Data) lançamentos assíncronos

    Solicita dados da REST API ServiceNow especificada.

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

    Padrão: nulo

    httpcabeçalhos Matriz Opcional. Solicite cabeçalhos HTTP exigidos pelo endpoint como pares de chave/valor.

    Padrão: nulo

    corpo Cadeia de caracteres Opcional. Solicitar parâmetro bodyrs.

    Padrão: nulo

    Tabela 5. Retorna
    Tipo Descrição
    DataResponse Retornado quando o método é bem-sucedido. Dados da chamada de REST API.
    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(_ error: 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 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.

    • canEncodeModel(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(Error)
      • systemError(Error)

      Lançado 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 - dados (para endpoint: NowAPIEndpoint, queryItems: [Cadeia de caracteres: Cadeia de caracteres]? = nil, httpHeaders: [Cadeia de caracteres: Cadeia de caracteres]? = nil, corpo: Dados? = nil)

    Solicita dados da REST API ServiceNow especificada.

    Nota:
    Este método foi descontinuado. Em vez disso, você deve usar a implementação assíncrona/aguardando do método.
    Tabela 6. Parâmetros
    Nome Tipo Descrição
    para endpoint NowAPIEndpoint Objeto que contém o endpoint da REST API ServiceNow 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.
    itens de consulta Matriz Opcional. Parâmetros de consulta para o endpoint como pares de chave/valor.

    Padrão: nulo

    httpcabeçalhos Matriz Opcional. Solicite cabeçalhos HTTP exigidos pelo endpoint como pares de chave/valor.

    Padrão: nulo

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

    Padrão: nulo

    Tabela 7. Retorna
    Tipo Descrição
    Qualquer publicador<DataResponse, NowDataError> Sucesso: dados retornados pela REST API.

    Falha: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: O código ou a mensagem de erro do provedor de token de acesso.
        • accessTokenRetrievalFailed
        • userSessionError(_ error: 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 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.

    • canEncodeModel(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(Error)
      • systemError(Error)

      Lançado 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)
    }