インスタンスで ServiceNow パブリック REST API を操作する
はMobile SDK、アプリケーションがインスタンスでServiceNowパブリック REST API を呼び出せるようにAndroidする機能を提供します。
NowAPIService API を使用すると、任意の基本ServiceNowパブリック REST API とやり取りしたり、インスタンス内でカスタム REST API を作成してアプリケーションからAndroid呼び出したりすることができます。
REST API を呼び出す ServiceNow 前に、makeNowAPIService() メソッドを呼び出してサービスのインスタンスを作成する必要があります。成功した場合はコールバックでサービス インスタンスが返されます。それ以外の場合はエラーがスローされます。
NowAPIService オブジェクトを初期化する方法を次に示します。
/**
* Helper class used to handle different Now service instances. It has an application scope or is Singleton
*/
@Singleton
class SdkManager @Inject constructor() {
private var nowApiService: NowAPIService? = null
/**
* Create the NowAPIService once in the lifetime of the application inside the Application class or another manager class
* that will be injected into other classes via dagger/hilt.
* NowAPIService should be created after initializing the NowSDK
*/
suspend fun getNowApiService(): NowAPIService? {
if (nowApiService != null) return nowApiService
return NowDataSDK.makeAPIService(URL("https://instance-name.service-now.com")).getOrThrow()
.also { this.nowApiService = it }
}
}NowAPIService オブジェクトが初期化されたら、NowAPIService data() メソッドを使用して、呼び出す REST エンドポイントとそれに関連するすべてのパラメーターを指定します。
suspend fun makeNowApiCall() {
val apiService = sdkManager.getNowApiService()
val apiPath = "api/now/table/sn_customerservice_case"
val endpoint = NowAPIService.Endpoint(HttpMethod.GET, apiPath, true)
val fieldNames = "sys_id,number,short_description,number,priority,state," +
"opened_at,account.name,account.number,contact.name,contact.email," +
"contact_type,assignment_group.name,assigned_to.name"
val queryParamsMap = mapOf("sysparm_fields" to fieldNames, "sysparm_limit" to "10")
val queryParams = QueryParams.Builder().addAll(queryParamsMap).build()
val response = runCatching {
apiService?.data(endpoint = endpoint, queryParams = queryParams)?.execute()
}
if (response.isSuccess) {
val resultString = response.getOrNull()?.body?.let { String(it) }
} else {
// Handle error
}
}