NowAPIInterface do serviço - Android

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 1 min. de leitura
  • . NowAPIService a interface fornece a capacidade de executar solicitações em um especificado ServiceNow REST API.

    Nota:
    Usuários convidados trabalham somente para NowAPIService Interface se a REST API que está sendo acessada estiver configurada para usuários convidados.
    Tabela 1. Propriedades
    Nome Tipo Descrição
    configuração NowServiceConfiguration Configuração de serviço a ser associada ao protocolo.

    NowAPIService - data(endpoint: NowAPIService.Endpoint, queryParams: QueryParams, cabeçalhos: Cabeçalhos, corpo: Cadeia de caracteres)

    Chama a REST API especificada no especificado ServiceNow instância.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    endpoint NowAPIService.Endpoint Endpoint REST a ser chamado.
    queryParams QueryParams Opcional. Objeto de parâmetro de consulta que contém os parâmetros de consulta a serem passados na chamada REST.

    Padrão: Nulo

    cabeçalhos Cabeçalhos Opcional. Objeto de cabeçalhos que contém os cabeçalhos a serem passados na chamada REST.

    Padrão: Nulo

    corpo Cadeia de caracteres Opcional. Objeto que contém o corpo da solicitação e o tipo de conteúdo para passar para a chamada REST.

    Padrão: Nulo

    Tabela 3. Retornos
    Tipo Descrição
    Chamada . ByteArray > Retorna resultados do endpoint REST chamado.

    suspend fun loadCases(): List<CaseItem> = withContext(Dispatchers.IO) {
      val apiService = nowServiceManager.getNowAPIService()
    
      val result = runCatching {
        val response = apiService.data(NowAPIService.Endpoint(
          relativePath = CASES_API,
          requestMethod = HttpMethod.GET,
          requireAuth = true)
        ).execute()
    
        val byteArray = response.body ?: throw Exception("Null Result")
        val buffer = Buffer()
        val reader = JsonReader.of(buffer.write(byteArray))
        val listType = Types.newParameterizedType(
          List::class.java,
          CaseItem::class.java
        )
    
        val resultType = Types.newParameterizedType(
          ResultResponse::class.java,
          listType
        )
        val adapter = moshi.adapter<ResultResponse<List<CaseItem>>>(resultType)
        adapter.fromJson(reader)
      }
    
      if (result.isSuccess) {
          result.getOrNull()?.result ?: throw Exception("Cases not in response")
      } else {
          throw result.exceptionOrNull() ?: Exception("Error Cases")
      }
    }