NowAPIService 인터페이스 - Android

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 2분
  • NowAPIService 인터페이스는 지정된 ServiceNow REST API에서 요청을 수행하는 기능을 제공합니다.

    주:
    액세스하는 REST API가 게스트 사용자에 대해 구성된 경우 게스트 사용자만 NowAPIService 인터페이스에 대해 작업합니다.
    표 1. 속성
    이름 유형 설명
    구성 NowServiceConfiguration 프로토콜과 연결할 서비스 구성입니다.

    NowAPIService - data(엔드포인트: NowAPIService.Endpoint, queryParams: QueryParams, 헤더: 헤더, 본문: 문자열)

    지정된 ServiceNow 인스턴스에서 지정된 REST API를 호출합니다.

    표 2. 매개변수
    이름 유형 설명
    엔드포인트 NowAPIService.Endpoint 호출할 REST 엔드포인트입니다.
    queryParams 쿼리 매개변수 옵션입니다. REST 호출에 전달할 쿼리 매개변수가 포함된 쿼리 매개변수 객체입니다.

    기본값: null

    헤더 헤더 옵션입니다. 헤더 REST 호출에 전달할 헤더가 포함된 객체입니다.

    기본값: null

    본문 문자열 옵션입니다. REST 호출에 전달할 요청 본문 및 콘텐츠 유형을 포함하는 객체입니다.

    기본값: null

    표 3. 반환
    유형 설명
    호출<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")
      }
    }