精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一款優秀、開源的 http 框架

開發 后端
這些http開源框架的接口使用相對來說,都不太一樣。不管選哪個,在我這個場景里來說,我都不希望在調用每個第三方的http api時寫上一堆http調用代碼。

 如果你因為業務關系,要和許多不同第三方公司進行對接。這些服務商都提供基于http的api。但是每家公司提供api具體細節差別很大。有的基于RESTFUL規范,有的基于傳統的http規范;有的需要在header里放置簽名,有的需要SSL的雙向認證,有的只需要SSL的單向認證;有的以JSON 方式進行序列化,有的以XML方式進行序列化。類似于這樣細節的差別太多了。

不同的公司API規范不一樣,這很正常。但是對于我來說,我如果想要代碼變得優雅。我就必須解決一個痛點:

不同服務商API那么多的差異點,如何才能維護一套不涉及業務的公共http調用套件。最好通過配置或者簡單的參數就能區分開來。進行方便的調用?

我當然知道有很多優秀的大名鼎鼎的http開源框架可以實現任何形式的http調用,在多年的開發經驗中我都有使用過。比如apache的httpClient包,非常優秀的Okhttp,jersey client。

這些http開源框架的接口使用相對來說,都不太一樣。不管選哪個,在我這個場景里來說,我都不希望在調用每個第三方的http api時寫上一堆http調用代碼。

所以,在這個場景里,我得對每種不同的http api進行封裝。這樣的代碼才能更加優雅,業務代碼和http調用邏輯耦合度更低。

可惜,我比較懶。一來覺得封裝起來比較費時間,二來覺對封裝這種底層http調用來說,應該有更好的選擇。不想自己再去造輪子。

于是,我發現了一款優秀的開源http框架,能屏蔽不同細節http api所帶來的所有差異。能通過簡單的配置像調用rpc框架一樣的去完成極為復雜的http調用。

https://gitee.com/dromara/forest

上手

Forest支持了Springboot的自動裝配,所以只需要引入一個依賴就行 

  1. <dependency>  
  2.   <groupId>com.dtflys.forest</groupId>  
  3.   <artifactId>spring-boot-starter-forest</artifactId>  
  4.   <version>1.3.0</version>  
  5. </dependency>  
  6. ```java  
  7. 定義自己的接口類  
  1. public interface MyClient {  
  2. @Request(url = "http://baidu.com" 
  3. String simpleRequest();  
  4. @Request(  
  5.         url = "http://ditu.amap.com/service/regeo" 
  6.         dataType = "json"  
  7.  
  8. Map getLocation(@DataParam("longitude") String longitude, @DataParam("latitude") String latitude);  
  9.  
  1. 在啟動類里配置代理接口類的掃描包  
  2. ```jva  
  3. @SpringBootApplication  
  4. @ForestScan(basePackages = "com.example.demo.forest" 
  5. public class DemoApplication {  
  6.     public static void main(String[] args) {  
  7.         SpringApplication.run(DemoApplication.class, args);  
  8.     }  

這時候,你就可以從spring容器中注入你的代理接口,像調用本地方法一樣去調用http的api了 

  1. @Autowired  
  2. private MyClient myClient;  
  3. @Override  
  4. public void yourMethod throws Exception {  
  5.     Map result = myClient.getLocation("124.730329","31.463683");  
  6.     System.out.println(JSON.toJSONString(result,true));  

日志打印,Forest打印了內部所用的http框架,和實際請求url和返回。當然日志可以通過配置去控制開關。

特點

我覺得對于尤其是做對接第三方api的開發同學來說,這款開源框架能幫你提高很多效率。

Forest 底層封裝了2種不同的http框架:Apache httpClient和OKhttp。所以這個開源框架并沒有對底層實現進行重復造輪子,而是在易用性上面下足了功夫。

我用Forest最終完成了和多個服務商api對接的項目,這些風格迥異的API,我僅用了1個小時時間就把他們轉化為了本地方法。然后項目順利上線。

Forest作為一款更加高層的http框架,其實你并不需要寫很多代碼,大多數時候,你僅通過一些配置就能完成http的本地化調用。而這個框架所能覆蓋的面,卻非常之廣,滿足你絕大多數的http調用請求。

Forest有以下特點:

  •  以Httpclient和OkHttp為后端框架
  •  通過調用本地方法的方式去發送Http請求, 實現了業務邏輯與Http協議之間的解耦
  •  相比Feign更輕量,不依賴Spring Cloud和任何注冊中心
  •  支持所有請求方法:GET, HEAD, OPTIONS, TRACE, POST, DELETE, PUT, PATCH
  •  支持靈活的模板表達式
  •  支持過濾器來過濾傳入的數據
  •  基于注解、配置化的方式定義Http請求
  •  支持Spring和Springboot集成
  •  實現JSON和XML的序列化和反序列化
  •  支持JSON轉換框架: Fastjson,Jackson, Gson
  •  支持JAXB形式的XML轉換
  •  支持SSL的單向和雙向加密
  •  支持http連接池的設定
  •  可以通過OnSuccess和OnError接口參數實現請求結果的回調
  •  配置簡單,一般只需要@Request一個注解就能完成絕大多數請求的定義
  •  支持異步請求調用

兩個很棒的功能

這里不對使用方式和配置方式一一描述,有興趣的可以去閱讀詳細文檔:

http://forest.dtflyx.com/

這里只想分析這個框架2個我認為比較好的功能

  •  模板表達式和參數的映射綁定功能

模板表達式在使用的時候特別方便,舉個栗子 

  1. @Request(  
  2.     url = "${0}/send?un=${1}&pw=${2}&ph=${3}&ct=${4}" 
  3.     type = "get" 
  4.     dataType = "json"  
  5.  
  6. public Map send(  
  7.     String base,  
  8.     String userName,  
  9.     String password,  
  10.     String phone,  
  11.     String content  
  12. ); 

上述是用序號下標進行取值,也可以通過名字進行取值: 

  1. @Request(  
  2.     url = "${base}/send?un=${un}&pw=${pw}&ph=${3}&ct=${ct}" 
  3.     type = "get" 
  4.     dataType = "json"  
  5.  
  6. public Map send(  
  7.     @DataVariable("base") String base,  
  8.     @DataVariable("un") String userName,  
  9.     @DataVariable("pw") String password,  
  10.     @DataVariable("ph") String phone, 
  11.     @DataVariable("ct") String content  
  12. ); 

甚至于可以這樣簡化寫: 

  1. @Request(  
  2.     url = "${base}/send" 
  3.     type = "get" 
  4.     dataType = "json"  
  5.  
  6. public Map send(  
  7.     @DataVariable("base") String base,  
  8.     @DataParam("un") String userName,  
  9.     @DataParam("pw") String password,  
  10.     @DataParam("ph") String phone, 
  11.     @DataParam("ct") String content  
  12. ); 

以上三種寫法是等價的

當然你也可以把參數綁定到header和body里去,你甚至于可以用一些表達式簡單的把對象序列化成json或者xml: 

  1. @Request( 
  2.     url = "${base}/pay" 
  3.    contentType = "application/json" 
  4.     type = "post" 
  5.     dataType = "json" 
  6.     headers = {"Authorization: ${1}"},  
  7.     data = "${json($0)}"  
  8.  
  9. public PayResponse pay(PayRequest request, String auth); 

當然數據綁定這塊詳情請參閱文檔

  • 對HTTPS的支持

以前用其他http框架處理https的時候,總覺得特別麻煩,尤其是雙向證書。每次碰到問題也只能去baidu。然后根據別人的經驗來修改自己的代碼。

Forest對于這方面也想的很周到,底層完美封裝了對https單雙向證書的支持。也是只要通過簡單的配置就能迅速完成。舉個雙向證書栗子: 

  1. @Request(  
  2.     url = "${base}/pay" 
  3.    contentType = "application/json" 
  4.     type = "post" 
  5.     dataType = "json" 
  6.    keyStore = "pay-keystore" 
  7.    data = "${json($0)}"  
  8.  
  9. public PayResponse pay(PayRequest request); 

其中pay-keystore對應著application.yml里的ssl-key-stores 

  1. forest:  
  2.   ...  
  3.   ssl-key-stores:  
  4.     - id: pay-keystore  
  5.       file: test.keystore  
  6.       keystore-pass: 123456  
  7.       cert-pass: 123456  
  8.       protocols: SSLv3 

這樣設置,就ok了,剩下的,就是本地代碼形式的調用了。

最后

Forest有很多其他的功能設定,如果感興趣的同學還請仔細去閱讀文檔和示例。

但是我想說的是,相信看到這里,很多人一定會說,這不就是Feign嗎?

我在開發Spring Cloud項目的時候,也用過一段時間Feign,個人感覺Forest的確在配置和用法上和Feign的設計很像,但Feign的角色更多是作為Spring Cloud生態里的一個成員。充當RPC通信的角色,其承擔的不僅是http通訊,還要對注冊中心下發的調用地址進行負載均衡。

而Forest這個開源項目其定位則是一個高階的http工具,主打友好和易用性。從使用角度出發,個人感覺Forest配置性更加簡單直接。提供的很多功能也能解決很多人的痛點。

開源精神難能可貴,好的開源需要大家的添磚加瓦和支持。希望這篇文章能給大家在選擇http客戶端框架時帶來一個新的選擇:Forest 

 

責任編輯:龐桂玉 來源: 民工哥技術之路
相關推薦

2021-03-26 08:07:25

LibreNMS開源監控軟件

2017-06-30 16:24:40

大數據神經網絡NNabla

2018-09-19 09:05:54

Linux桌面開源

2024-08-16 08:31:05

2024-12-25 13:27:16

2016-02-15 11:44:23

源碼開源項目watch

2024-02-23 08:13:25

Excalidraw白板工具開源

2015-12-03 10:51:16

2022-07-11 06:43:21

測試框架Java

2020-01-13 15:24:22

框架SparkHadoop

2023-10-31 08:03:33

開源電子簽名組件

2023-04-20 08:00:40

2015-09-23 17:39:52

Github開源工具

2021-05-18 13:25:28

feapder爬蟲Python

2018-01-17 15:05:22

框架設計爬蟲Scrapy

2014-11-13 14:32:53

2022-12-06 17:22:45

2015-09-28 09:56:17

Github開源工具編程

2023-09-06 08:19:53

2021-06-09 09:52:29

開源Pyroscope代碼
點贊
收藏

51CTO技術棧公眾號

欧美成人福利| 9i精品一二三区| 国产日韩视频| 中文字幕在线看视频国产欧美| 深夜黄色小视频| 黄色片免费在线观看| 岛国av在线一区| 欧洲永久精品大片ww免费漫画| 中国特黄一级片| 国产精品极品| 欧美色倩网站大全免费| 久操手机在线视频| 久久久久久久久亚洲精品| 精品中文字幕在线播放| bl动漫在线观看| 在线成人视屏| 一区二区三区自拍| 久久久久一区二区| 国产浮力第一页| 丝袜美腿高跟呻吟高潮一区| 欧美成人精品在线| 一级黄色录像毛片| 红杏一区二区三区| 欧美一区二区三区在线视频| 波多野结衣作品集| 黄色影院在线看| 亚洲视频一二三区| 欧美日韩三区四区| 免费看黄网站在线观看| 久久av老司机精品网站导航| 日本欧美在线视频| 国产一国产二国产三| 91久久电影| 亚洲色图美腿丝袜| 中文字幕免费在线播放| 日本精品视频| 777a∨成人精品桃花网| 成人中文字幕av| 亚洲精品中文字幕| 亚洲一区影音先锋| 国产av第一区| 欧美成年黄网站色视频| 久久久久久9999| 久久精品日产第一区二区三区乱码| 国产sm主人调教女m视频| 麻豆久久久久久久| 国产精品人人做人人爽| 无码视频在线观看| 久久婷婷激情| 日本成熟性欧美| 久久国产视频播放| 国产欧美在线| 欧美亚洲国产日本| 91久久国产视频| 99精品视频网| 5278欧美一区二区三区| 国产情侣在线视频| 99视频一区| 欧美一级电影在线| 中文在线第一页| 六月丁香综合| 国产精品久久久久久亚洲影视 | 最近中文字幕一区二区| av在线一区不卡| 欧美日本精品一区二区三区| 在线黄色免费看| 99tv成人影院| 日韩免费观看高清完整版| 久久久久久无码精品人妻一区二区 | 17c精品麻豆一区二区免费| 先锋影音一区二区三区| 日韩精品成人av| 亚洲你懂的在线视频| 日韩精品一区二区三区电影| 成人影音在线| 色哟哟精品一区| 538任你躁在线精品免费| 日日夜夜亚洲精品| 欧美电视剧在线看免费| 性色av蜜臀av色欲av| 九九久久电影| 日韩亚洲第一页| 欧美精品乱码视频一二专区| 亚洲国产日本| 国产精品你懂得| 国产高中女学生第一次| 99精品桃花视频在线观看| 日韩精品久久一区二区三区| 黄色动漫在线| 精品福利免费观看| 艹b视频在线观看| 日韩在线精品强乱中文字幕| 日韩精品在线影院| fc2ppv在线播放| 亚洲久久成人| 国产在线视频不卡| 你懂的网站在线| 中文一区在线播放| 91免费黄视频| 日本成人在线网站| 欧美videos中文字幕| 久久成人激情视频| 国产精品videosex极品| 97视频国产在线| 国产伦一区二区| 久久免费看少妇高潮| 强伦女教师2:伦理在线观看| 欧美裸体视频| 日韩亚洲欧美在线| 一级特黄曰皮片视频| 亚洲激情二区| 91精品国产综合久久久久久蜜臀| 婷婷在线观看视频| 亚洲色图欧美偷拍| 国产成人亚洲精品无码h在线| vam成人资源在线观看| 亚洲欧美综合图区| 国产精彩视频在线观看| 激情综合网av| 日韩中文不卡| 精品众筹模特私拍视频| 欧美日韩久久一区| 国产精品jizz| 99精品视频免费| 国产精品一区二区a| 免费在线观看黄| 欧美综合在线视频| 国产精品无码永久免费不卡| 韩国亚洲精品| 亚洲一区二区三区香蕉| 1769在线观看| 在线观看日韩电影| 亚洲av成人无码一二三在线观看| 亚洲精品一区二区妖精| 国产精品免费电影| 国产玉足榨精视频在线观看| 欧美日韩国产中文字幕 | 国产精品无码av在线播放| 久久天堂久久| 久久综合伊人77777尤物| 中文字幕一区二区久久人妻| 久久久国产午夜精品| 国产中文字幕免费观看| 乱亲女h秽乱长久久久| 欧美激情一区二区久久久| 国产情侣av在线| 自拍偷拍欧美激情| 在线观看av免费观看| 99久久综合| 成人欧美在线观看| 麻豆视频在线观看免费| 欧美精品色一区二区三区| 91l九色lporny| 人禽交欧美网站| 亚洲欧美久久234| 欧美视频在线视频精品| 日韩一中文字幕| 国产乱子伦精品无码码专区| 成人免费一区二区三区在线观看| 天天看片天天操| 欧美成人日本| 国产欧美日韩伦理| 亚洲欧美韩国| 亚洲一区二区精品| 亚洲天堂2021av| 亚洲乱码日产精品bd| 久久久久久久久久久久国产精品| 亚洲一级影院| 欧美精品一区二区三区在线看午夜| 周于希免费高清在线观看| 亚洲视频999| 国产巨乳在线观看| 亚洲综合一二三区| 久久久国产精品无码| 久久久久久网| 手机福利在线视频| 97久久综合精品久久久综合| 欧美野外猛男的大粗鳮| www.中文字幕久久久| 欧美一区二区成人6969| 尤物视频在线观看国产| 久久精品视频在线免费观看 | 欧美天堂在线| 欧美国产日韩在线| 欧美日韩在线中文字幕| 欧美日韩美少妇| 精品无码av在线| 国产午夜精品理论片a级大结局| 日本高清久久久| 亚洲电影在线| 一区二区三区久久网| youjizzjizz亚洲| 国产成人精品电影久久久| 黄色成年人视频在线观看| 欧美精品一区视频| 中文字幕天堂在线| 亚洲影视在线播放| 中字幕一区二区三区乱码| 韩国三级中文字幕hd久久精品| 国产 日韩 欧美在线| 欧美日韩国产高清电影| 99久久精品免费看国产四区| 日本不卡一二三| 色综合天天狠天天透天天伊人| 国产香蕉视频在线看| 欧美成人精品1314www| 自拍偷拍福利视频| 午夜亚洲国产au精品一区二区| 蜜桃av免费在线观看| 成人av片在线观看| 色网站在线视频| 日韩精品亚洲专区| xxxx18hd亚洲hd捆绑| 午夜片欧美伦| 日韩视频专区| 牛牛影视久久网| 99三级在线| 日韩精品第二页| 国产z一区二区三区| 俺来俺也去www色在线观看| 日韩视频精品在线| 国产私拍精品| 日韩精品亚洲视频| 亚洲国产日韩在线观看| 5566中文字幕一区二区电影| 夜夜爽妓女8888视频免费观看| 午夜欧美在线一二页| 国产精品久久久久久久精| 国产精品三级电影| 三上悠亚影音先锋| 97久久超碰国产精品| 日本精品一二三区| 国产激情视频一区二区三区欧美 | 久久久精品tv| 国产美女精品久久| xnxx国产精品| 亚洲狠狠婷婷综合久久久久图片| 成人免费视频国产在线观看| 国产xxx在线观看| 国产精品1区2区3区在线观看| 91看片破解版| 精品在线播放午夜| 国产3p在线播放| 久久精品72免费观看| 一级黄色录像在线观看| 青椒成人免费视频| 中文字幕有码av| 老司机午夜精品99久久| 日本超碰在线观看| 久久国产综合精品| 亚洲欧美日本一区二区| 国产一区二区在线视频| 亚洲涩涩在线观看| 国产一区二区免费在线| 中文字幕第六页| 岛国一区二区在线观看| 熟妇人妻久久中文字幕| 久久久亚洲午夜电影| 久久精品—区二区三区舞蹈| 亚洲国产精品黑人久久久| 9.1片黄在线观看| 中文字幕日韩精品一区| 日韩影院一区二区| 亚洲伊人色欲综合网| 精品91久久久| 91福利区一区二区三区| 在线观看免费视频a| 欧美一级久久久| 少妇一区二区三区四区| 亚洲精品综合久久中文字幕| 9色在线观看| 欧美激情2020午夜免费观看| 国产网站在线| 国产精品久久久久久搜索| 久久av偷拍| 蜜桃久久精品乱码一区二区| 欧美限制电影| 成人黄色片免费| 国产精品毛片在线看| 一区二区在线播放视频| 狠狠色丁香久久婷婷综合丁香| 国产精品无码自拍| www国产成人| 91狠狠综合久久久| 午夜久久久久久久久| 日本一本在线观看| 欧美一区二区三区在线观看| 亚洲欧美日韩动漫| 最好看的2019年中文视频| 免费污视频在线观看| 国产精品99久久久久久白浆小说| 精品国产第一国产综合精品| 久久久水蜜桃| 欧美xxxxx视频| 欧美男女爱爱视频| 美女国产一区二区三区| 中文字幕人妻一区| 国产欧美日韩亚州综合| 久久久久无码国产精品不卡| 欧美影院午夜播放| 黄色av小说在线观看| 正在播放国产一区| 国产精品一区hongkong| 国产精品美女久久久久久免费| 一本色道69色精品综合久久| 欧美在线视频一区二区三区| 欧美久久一级| 艹b视频在线观看| 91蜜桃在线免费视频| 裸体武打性艳史| 欧美性高清videossexo| 亚洲色大成网站www| 九九热这里只有在线精品视| 欧美日韩精品一区二区三区视频| 国产精品区一区二区三含羞草| 999久久久免费精品国产| 92看片淫黄大片一级| 国产sm精品调教视频网站| 欧洲性xxxx| 色播五月激情综合网| 色噜噜在线播放| 欧美国产日韩精品| 成人在线视频区| 亚洲欧洲国产日韩精品| 性色一区二区三区| 一本加勒比波多野结衣| 一区二区国产视频| 国产日韩一级片| 日韩中文字幕在线播放| 欧美日韩激情电影| 欧美二区三区在线| 性欧美暴力猛交另类hd| 日本japanese极品少妇| 亚洲国产精品嫩草影院| 精品人妻无码一区二区| 久久久91精品国产一区不卡| 8av国产精品爽爽ⅴa在线观看 | xfplay5566色资源网站| 一区二区三区在线免费视频| 国产精品羞羞答答在线| 久久精品国产综合| 成人在线视频观看| 午夜老司机精品| 麻豆精品视频在线观看免费| 久久久国产一级片| 欧美性videosxxxxx| av在线免费观看网站| 国产乱人伦真实精品视频| 不卡在线一区二区| 亚洲另类第一页| 亚洲视频在线观看一区| 国产超碰人人模人人爽人人添| 操日韩av在线电影| 日韩精品一区二区三区中文| 屁屁影院ccyy国产第一页| 丁香亚洲综合激情啪啪综合| 五月天婷婷网站| 日韩国产欧美精品一区二区三区| 三妻四妾完整版在线观看电视剧| 免费在线一区二区| 日韩福利电影在线| 五月天婷婷丁香网| 欧美一级一区二区| 国产白丝在线观看| 久久波多野结衣| 日韩成人一级片| 女人18毛片毛片毛片毛片区二 | 国产肉体xxxx裸体784大胆| 精品美女久久久久久免费| 邻居大乳一区二区三区| 国产精品国内视频| 亚洲成人精品| 久久久久亚洲无码| 色香蕉成人二区免费| 日本中文字幕在线观看| 91视频最新| 亚洲免费网站| 黄色精品视频在线观看| 欧美精品一区二| 天天综合网天天| 8x8x华人在线| 99国产精品国产精品久久| 波多野结衣网站| 欧美国产亚洲精品久久久8v| 亚洲人成精品久久久 | av免费观看大全| 中文字幕乱码亚洲精品一区| 国产模特av私拍大尺度| 91精品成人久久| 99久精品视频在线观看视频| 无码人妻一区二区三区一| 日韩欧美中文免费| 黄网站在线播放| 麻豆成人在线播放| 国内欧美视频一区二区| 九九热在线免费观看| 久久亚洲电影天堂| 久草成人资源| 精品人妻二区中文字幕| 欧美午夜一区二区三区|