精講RestTemplate第1篇-在Spring或非Spring環境下如何使用

      網友投稿 880 2025-04-01

      一、什么是 RestTemplate?


      RestTemplate是執行HTTP請求的同步阻塞式的客戶端,它在HTTP客戶端庫(例如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基礎封裝了更加簡單易用的模板方法API。也就是說RestTemplate是一個封裝,底層的實現還是java應用開發中常用的一些HTTP客戶端。但是相對于直接使用底層的HTTP客戶端庫,它的操作更加方便、快捷,能很大程度上提升我們的開發效率。

      RestTemplate作為spring-web項目的一部分,在Spring 3.0版本開始被引入。RestTemplate類通過為HTTP方法(例如GET,POST,PUT,DELETE等)提供重載的方法,提供了一種非常方便的方法訪問基于HTTP的Web服務。如果你的Web服務API基于標準的RESTful風格設計,使用效果將更加的完美。

      根據Spring官方文檔及源碼中的介紹,RestTemplate在將來的版本中它可能會被棄用,因為他們已在Spring 5中引入了WebClient作為非阻塞式Reactive HTTP客戶端。但是RestTemplate目前在Spring 社區內還是很多項目的“重度依賴”,比如說Spring Cloud。另外,RestTemplate說白了是一個客戶端API封裝,和服務端相比,非阻塞Reactive 編程的需求并沒有那么高。

      二、非Spring環境下使用RestTemplate

      精講RestTemplate第1篇-在Spring或非Spring環境下如何使用

      為了方便后續開發測試,首先介紹一個網站給大家。JSONPlaceholder是一個提供免費的在線REST API的網站,我們在開發時可以使用它提供的url地址測試下網絡請求以及請求參數?;蛘弋斘覀兂绦蛐枰@取一些模擬數據、模擬圖片時也可以使用它。

      RestTemplate是spring的一個rest客戶端,在spring-web這個包下。這個包雖然叫做spring-web,但是它的RestTemplate可以脫離Spring 環境使用。

      org.springframework spring-web 5.2.6.RELEASE

      1

      2

      3

      4

      5

      測試一下Hello world,使用RestTemplate發送一個GET請求,并把請求得到的JSON數據結果打印出來。

      @Test public void simpleTest() { RestTemplate restTemplate = new RestTemplate(); String url = "http://jsonplaceholder.typicode.com/posts/1"; String str = restTemplate.getForObject(url, String.class); System.out.println(str); }

      1

      2

      3

      4

      5

      6

      7

      8

      服務端是JSONPlaceholder網站,幫我們提供的服務端API。需要注意的是:“http://jsonplaceholder.typicode.com/posts/1"服務URL,雖然URL里面有posts這個單詞,但是它的英文含義是:帖子或者公告,而不是我們的HTTP Post協議。所以說"http://jsonplaceholder.typicode.com/posts/1”,請求的數據是:id為1的Post公告資源。打印結果如下:

      這里我們只是演示了RestTemplate 最基礎的用法,RestTemplate 會寫成一個系列的文章,請大家關注。

      三、Spring環境下使用RestTemplate

      將maven坐標從spring-web換成spring-boot-starter-web

      org.springframework.boot spring-boot-starter-web

      1

      2

      3

      4

      將RestTemplate配置初始化為一個Bean。這種初始化方法,是使用了JDK 自帶的HttpURLConnection作為底層HTTP客戶端實現。我們還可以把底層實現切換為Apache HttpComponents,okHttp等,我們后續章節會為大家介紹。

      @Configuration public class ContextConfig { //默認使用JDK 自帶的HttpURLConnection作為底層實現 @Bean public RestTemplate restTemplate(){ RestTemplate restTemplate = new RestTemplate(); return restTemplate; } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      在需要使用RestTemplate 的位置,注入并使用即可。

      @Resource //@AutoWired private RestTemplate restTemplate;

      1

      2

      HTTP Spring

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps表格如何用星號代替數據
      下一篇:園林項目管理
      相關文章
      亚洲日韩人妻第一页| 亚洲国产精品一区二区九九 | 亚洲狠狠ady亚洲精品大秀| 亚洲av永久无码精品古装片| 国产午夜亚洲精品午夜鲁丝片 | 亚洲精品一品区二品区三品区| 国产成人毛片亚洲精品| 婷婷亚洲天堂影院| 亚洲国产专区一区| 亚洲?v无码国产在丝袜线观看| 国产精品亚洲lv粉色| 亚洲av无码无线在线观看| 亚洲AV永久无码天堂影院| 亚洲欧美国产日韩av野草社区| 亚洲美国产亚洲AV| 亚洲AV无码一区二区大桥未久 | 亚洲AV无码片一区二区三区| 亚洲av乱码中文一区二区三区| 亚洲AV无码国产精品永久一区| 亚洲丰满熟女一区二区哦| 国产成人精品久久亚洲高清不卡| 国产精品亚洲AV三区| 亚洲国产精品狼友中文久久久| 亚洲精品国产电影| 亚洲永久无码3D动漫一区| 国产成A人亚洲精V品无码| 亚洲AV无码久久精品色欲| 久久亚洲精品人成综合网| 亚洲精品国产情侣av在线| 亚洲av无码片区一区二区三区| 亚洲国产熟亚洲女视频| 风间由美在线亚洲一区| 久久精品亚洲福利| 国产偷v国产偷v亚洲高清| 久久精品国产亚洲精品2020| 亚洲国产亚洲综合在线尤物| 久久综合久久综合亚洲| 国产成人精品久久亚洲高清不卡| 亚洲人成电影在线播放| 久久亚洲国产视频| 亚洲免费黄色网址|