ServiceNowインスタンスでパブリック REST API とやり取りする

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:3分
  • Mobile SDK は、Android アプリケーションがServiceNowインスタンスでパブリック REST API を呼び出せるようにします。

    NowAPIService API を使用すると、ベース REST 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
      }
    }