Forest v1.5.13 發布,聲明式 HTTP 框架,已超 1.7k star


Forest介紹

Forest 是一個開源的 Java HTTP 客戶端框架,它能夠將 HTTP 的所有請求信息(包括 URL、Header 以及 Body 等信息)綁定到您自定義的 Interface 方法上,能夠通過調用本地接口方法的方式發送 HTTP 請求

現已超過 1700 star

Gitee上的Star趨勢圖

Forest 如何使用

Forest 不需要您編寫具體的 HTTP 調用過程,只需要您定義一個接口,然后通過 Forest 注解將 HTTP 請求的信息添加到接口的方法上即可。請求發送方通過調用您定義的接口便能自動發送請求和接受請求的響應

Forest 的工作原理

Forest 會將您定義好的接口通過動態代理的方式生成一個具體的實現類,然后組織、驗證 HTTP 請求信息,綁定動態數據,轉換數據形式,SSL 驗證簽名,調用后端 HTTP API(httpclient 等 API)執行實際請求,等待響應,失敗重試,轉換響應數據到 Java 類型等臟活累活都由這動態代理的實現類給包了。 請求發送方調用這個接口時,實際上就是在調用這個干臟活累活的實現類

官網和倉庫地址

官網地址:

http://forest.dtflyx.com

Gitee 倉庫地址:

https://gitee.com/dromara/forest

Github 倉庫地址:

https://github.com/dromara/forest

重點更新內容

新增用於指定請求體類型的注解@BodyType,可用於發送請求體格式與Content-Type頭相異的數據

/**
 * 此請求Content-Type頭為 x-www-form-urlencoded
 * 而請求體的格式卻可以是JSON格式
 */
@BodyType("json")
@Post(url = "/", contentType = ContentType.APPLICATION_X_WWW_FORM_URLENCODED)
String send(@Body("name") String name, @Body("value") Object value);
@BodyType注解同時可以指定Encoder
/**
 * 指定請求體格式為json的同時,指定Encoder為Jackson轉換器
 */
@BodyType(type = "json", encoder = ForestJacksonConverter.class)
@Post(url = "/", contentType = ContentType.APPLICATION_X_WWW_FORM_URLENCODED)
String send(@Body Entry entry);
如果要指定特定JSON轉換器為某一請求的Encoder,可以使用對應JSON框架的快捷注解
/**
 * 指定Fastjson為Encoder
 */
@FastjsonEncoder
@Post("/")
String sendFastjson(@Body Entry entry);
/**
 * 指定Jackson為Encoder
 */
@JacksonEncoder
@Post("/")
String sendJackson(@Body Entry entry);
/**
 * 指定Gson為Encoder
 */
@GsonEncoder
@Post("/")
String sendGson(@Body Entry entry);
本次更新內容

新增特性

  • feat: 指定請求體類型的@BodyType注解 (#I4IF3N)
  • feat: 新增獲取全部請求體中鍵值對參數的方法 (#I4GWO7)

修復的BUG

  • fix: 在請求中設置自定義Encoder無效 (#I4HNZF)
  • fix: url解析問題,如果包含@符@會去掉 (#I4GQWW)

其它改動

  • add: BodyType注解
  • add: FastjsonEncoder注解
  • add: GsonEncoder注解
  • add: JacksonEncoder注解

不兼容改動

  • delete: com.dtflys.forest.http.ForestBodyType類
  • update: ForestRequest類的setBodyType方法和bodyType方法的參數類型改為ForestDataType

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM