Interface NowAPIService : Android

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 1 minute de lecture
  • L’interface NowAPIService permet 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 en cours d’accès est configurée pour les utilisateurs invités.
    Tableau 1. Propriétés
    Nom Type Description
    configuration Configuration Now ServiceConfiguration Configuration du service à associer au protocole.

    NowAPIService : data(endpoint : NowAPIService.Endpoint, queryParams : QueryParams, headers : Headers, body : String)

    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.Point de terminaison Point de terminaison REST à appeler.
    queryParams QueryParams Facultatif. Objet du paramètre de requête qui contient les paramètres de requête à transmettre dans l’appel REST.

    Valeur par défaut : null

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

    Valeur par défaut : null

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

    Valeur par défaut : null

    Tableau 3. Renvoie
    Type Description
    Call<ByteArray> Renvoyer les résultats à partir 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")
      }
    }