天天看點

橫空出世!這款聲明式HTTP用戶端工具出IDEA插件了,真心強大!

Forest 是一款聲明式的 Java 開源 HTTP 架構,相比它的前輩 Httpclient 和 OkHttp 更簡明易懂、也更容易維護。

廢話不多說,先讓我們康康用它寫出來的代碼長什麼樣子,如果你想詳細了解它的使用的話,可以參考Forest使用教程 。

public interface AmapClient {

    /**
     * 聰明的你一定看出來了這是一個GET請求
     */
    @Get("http://ditu.amap.com/service/regeo?longitude={lng}&latitude={lat}")
    Map getLocation(@Var("lng") String longitude, @Var("lat") String latitude);
}
           

輕輕松松完成了從高德地圖擷取經緯度所在的地理資訊的 Rest API 接口定義,之後隻要調用AmapClient.getLocation這個 Java 方法即可自動發送 HTTP 請求,并接受響應資料,然後轉換成 Map 類型對象再交到你手上。

這樣做确實比以前手動組裝 OkHttp 的 Client 對象、 OkRequest 對象好上很多倍,就算要調用的 HTTP 接口很多、結構再複雜,也不用怕了。

但當一個項目中有成千上萬個 HTTP 請求要調用,接口的管理和維護成本也會上升到一個吃力的高度。

比如哪個接口對應哪個網站平台哪個URL往往不能一眼看出、項目中散落的接口具體有哪些也沒法一下子就知道。

另一個問題是 Forest 中的模闆字元串中的占位符可以友善的引用配置檔案中定義的變量已經通過@Var标簽定義的參數,但文法高亮和一個表達式語言應用的基本支援(如代碼補全和提示)。

這在代碼少的時候不算問題,代碼接口躲到一定程度,字元串模闆中的變量引用寫錯的機率就大大增加,因為配置也多了,就容易搞不清楚誰再調用誰。

這個時候就有請我們今天的主角 ForestX 登場啦~~

專為 Forest 量身定做的 IDEA 插件

ForestX 是一款專為 Forest 提供支援的 IDEA 插件,它能大幅提高您使用 Forest 架構時的開發體驗。

倉庫位址: https://gitee.com/CHMing7/ForestX

接下來,就讓我們康康它有哪些功能:

側邊導航工具欄

點選右邊的Forestlogo小鳥圖示,可打開ForestX的導航工具欄,它會把項目中定義的 Forest 接口都羅列在一起,友善管理。

橫空出世!這款聲明式HTTP用戶端工具出IDEA插件了,真心強大!
  • 接口清單分三個層次:最頂層的項目(目錄)、Forest 接口(小鳥圖示)、請求方法。
  • 在 Forest 接口清單中,方法名左側的圖示代表了該請求的類型(GET/POST)。
  • 方法名/接口的右側,則是用灰色字型展示的 URL 路徑 (一般不是全路徑,而是定義在方法上的路徑)。

代碼補全

  1. 根據配置檔案中forest.variables下定義的全局變量來補全代碼。
橫空出世!這款聲明式HTTP用戶端工具出IDEA插件了,真心強大!
  1. 根據YAML配置檔案中定義的YAML配置項來補全代碼。
橫空出世!這款聲明式HTTP用戶端工具出IDEA插件了,真心強大!
  1. 根據請求方法的@Var參數定義來補全代碼。
橫空出世!這款聲明式HTTP用戶端工具出IDEA插件了,真心強大!
  1. 根據@BindingVar注解定義的方法來補全代碼。
橫空出世!這款聲明式HTTP用戶端工具出IDEA插件了,真心強大!
  1. 在程式設計式的代碼中,也可出現代碼補全的智能提示,不過目前僅對 Forest.get、Forest.post 等請求方法開放次功能。
橫空出世!這款聲明式HTTP用戶端工具出IDEA插件了,真心強大!

代碼跳轉

按住鍵盤Ctrl鍵,将滑鼠移動到 Forest 模闆表達式中的辨別符上(比如變量名),并懸停一小段時間,就會跳出該辨別符所引用的配置變量或Java屬性的簡短資訊,此時點選滑鼠左鍵,即可跳轉到該辨別符所引用的變量/配置的定義代碼。

橫空出世!這款聲明式HTTP用戶端工具出IDEA插件了,真心強大!

結語

程式猿的工作是創造工具,而工具亦可以用來服務程式猿,這是一種正向循環,也是一次次疊代的縮影,正是在一次次的疊代中,程式猿們不斷地創造出很好、更完善、更可能改變世界的工具,而 ForestX 的疊代才剛剛開始!

繼續閱讀