NowAPIService Interface : Android

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 1 minute de lecture
  • L’interface NowAPIService offre la possibilité d’effectuer des demandes sur une API REST spécifiée ServiceNow .

    Remarque :
    Les utilisateurs invités ne fonctionnent pour l’interface NowAPIService que si l’API REST accessible est configurée pour les utilisateurs invités.
    Tableau 1. Propriétés
    Nom Type Description
    configuration NowServiceConfiguration Configuration de service à associer au protocole.

    NowAPIService : data(endpoint : NowAPIService.Endpoint, queryParams : QueryParams, en-têtes : en-têtes, corps : chaîne)

    Appelle l’API REST spécifiée sur l’instance spécifiée ServiceNow .

    Tableau 2. Paramètres
    Nom Type Description
    point de terminaison NowAPIService.Endpoint Point de terminaison REST à appeler.
    queryParams Paramètres de requête Facultatif. Objet de paramètre de requête qui contient les paramètres de requête à transmettre dans l’appel REST.

    Valeur par défaut : nul

    en-têtes En-têtes Facultatif. En-têtes : objet contenant les en-têtes à transmettre dans l’appel REST.

    Valeur par défaut : nul

    body Chaîne Facultatif. Objet contenant le corps et le type de contenu de la demande à transmettre à l’appel REST.

    Valeur par défaut : nul

    Tableau 3. Renvoie
    Type Description
    Appel<ByteArray> Renvoyer les résultats du point de terminaison REST appelé.

    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")
      }
    }