Forest v1.5.13 釋出,宣告式 HTTP 框架,已超 1.7k star

公子駿發表於2021-11-16

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

 

相關文章