RESTful API是什麼?在inBuilder中的應用?如何實作動态釋出?本文将為你一一解答。
一、什麼是RESTful API?
RESTful API是一種流行的API設計風格,可以讓軟體更加清晰、簡潔、有層次、易于維護。它充分利用了 HTTP 協定的各種功能,是 HTTP 協定的最佳實踐。
二、RESTful API在inBuilder中的應用?
在inBuilder中,前後端通信采用RESTful風格的API。通過inBuilder低代碼平台開發的應用中,API同樣符合RESTful風格。
作為前後端通信的接口,inBuilder中每一個應用都需要衆多的RESTful API來提供服務,為了提高開發效率且保證可維護性和穩定性,inBuilder使用了統一業務模組化語言及RESTful API動态釋出技術自動生成和釋出RESTful API。
三、RESTful API動态釋出技術詳解
inBuilder中的RESTful API動态釋出技術根據統一業務模組化語言生成外部服務定義,将後端提供的服務建構并釋出為RESTful API供外部調用,整個過程包括五個步驟(見圖1所示):描述API、生成代碼、編譯代碼、加載位元組碼和注冊釋出。具體實作過程如下:
圖1 RESTful API動态釋出過程
1、描述API
外部服務定義(見圖2及圖3)描述了提供服務的業務資源(如:視圖對象)以及該業務資源提供的具體操作資訊。每個具體操作中定義了請求路徑、HTTP方法、參數、傳回值等資訊。
圖2 外部服務定義中繼資料類型
圖3 外部服務定義詳細内容
2、生成代碼
根據外部服務定義資訊,inBuilder可以生成RESTful API的Java代碼。生成的代碼樣例如圖4所示。
圖4 EAPI代碼生成樣例
3、編譯代碼
生成的Java代碼需要編譯成.class檔案才能被JVM加載運作。inBuilder中使用Java動态編譯技術,即JDK提供的javax.util.JavaCompiler類在運作期編譯Java源代碼。JavaCompiler類編譯方法輸入輸出如圖5所示。
圖5 JavaCompiler動态編譯方法
4、加載位元組碼
編譯後的位元組碼(即.class檔案)需要加載到JVM中才可以使用,這就需要借助Java提供的類加載器将位元組碼動态加載到JVM中。Java提供的URLClassLoader可以指定目錄來加載類,inBuilder中通過實作其子類,将編譯後的位元組碼加載到JVM中使用。動态加載位元組碼關鍵步驟如圖6所示。
圖6 利用類加載器加載位元組碼
5、 注冊釋出
加載位元組碼後,可以拿到Class類對象,使用Java反射生成該類的執行個體對象。CAF架構提供了接口用于注冊RESTful API服務,調用接口時将執行個體對象作為入參傳遞即可完成RESTful API的動态釋出。釋出過程如圖7所示。
圖7 調用CAF架構接口注冊釋出RESTful API
總之,inBuilder團隊的RESTful API動态釋出技術使用了Java提供的動态編譯技術,能夠動态釋出RESTful API并提高開發效率,讓應用更易于維護和穩定。
如果想了解更多Java動态編譯技術,可點選下載下傳安裝inBuilder開源社群版:https://ibc.inspures.com/