Interagieren Sie mit der öffentlichen REST-API in einer ServiceNow -Instanz

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 1 Minute Lesedauer
  • Mobile SDK bietet Funktionen, mit denen Anwendungen von Android die öffentliche REST-API in einer Instanz von ServiceNow ] aufrufen können.

    Mit der NowAPIService- API können Sie mit einer der öffentlichen ServiceNow Basis- REST-APIsinteragieren oder benutzerdefinierte REST-APIs innerhalb der Instanz erstellen und diese aus Ihrer Android -Anwendung aufrufen.

    Bevor Sie eine ServiceNow REST API aufrufen, müssen Sie die MethodemakeNowAPIService() aufrufen, um eine Instanz des Service zu erstellen. Die Serviceinstanz wird bei Erfolg im Rückruf zurückgegeben. Andernfalls wird ein Fehler ausgelöst.

    Im Folgenden wird gezeigt, wie ein NowAPIService-Objekt initialisiert wird:
    /**
     * 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 }
        }
    
    }
    Sobald das Objekt NowAPIService initialisiert ist, verwenden Sie die Methode NowAPIService data(), um den aufzurufenden REST-Endpunkt und alle zugehörigen Parameter anzugeben:
     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
      }
    }