ServiceNow インスタンスでのパブリック REST API とのやり取り
この Mobile SDK は、 Android アプリケーションが ServiceNow インスタンスでパブリック REST API を呼び出せるようにする機能を提供します。
NowAPIService API を使用すると、ベース ServiceNowパブリック REST API とやり取りしたり、インスタンス内にカスタム REST API を作成して Android アプリケーションからそれらを呼び出したりすることができます。
ServiceNow REST API を呼び出す前に、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
}
}