NowAPIService インターフェイス: Android

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:2分
  • NowAPIService インターフェイスは、指定された ServiceNow REST API で要求を実行する機能を提供します。

    注:
    アクセス対象の REST API がゲストユーザー用に構成されている場合、ゲストユーザーは NowAPIService インターフェイスでのみ機能します。
    表 : 1. プロパティ
    名前 タイプ 説明
    構成 NowServiceConfiguration プロトコルに関連付けるサービス構成。

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

    指定された ServiceNow インスタンスで指定された REST API を呼び出します。

    表 : 2. パラメーター
    名前 タイプ 説明
    endpoint NowAPIService.Endpoint 呼び出す REST エンドポイント。
    queryParams クエリパラメーター オプション。REST 呼び出しで渡すクエリパラメーターを含むクエリパラメーターオブジェクト。

    デフォルト:null

    ヘッダー ヘッダー オプション。REST 呼び出しで渡すヘッダーを含むヘッダーオブジェクト。

    デフォルト:null

    本文 文字列 オプション。REST 呼び出しに渡す要求本文とコンテンツタイプを含むオブジェクト。

    デフォルト:null

    表 : 3. 戻り値
    タイプ 説明
    Call<ByteArray> 呼び出された REST エンドポイントから結果を返します。

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