本文是精講RestTemplate第5篇,前篇的blog訪問地址如下:
- 精講RestTemplate第1篇-在Spring或非Spring環境下如何使用
- 精講RestTemplate第2篇-多種底層HTTP客戶端類庫的切換
- 精講RestTemplate第3篇-GET請求使用方法詳解
- 精講RestTemplate第4篇-POST請求方法使用詳解
為了方便後續開發測試,首先介紹一個網站給大家。JSONPlaceholder是一個提供免費的線上REST API的網站,我們在開發時可以使用它提供的url地址測試下網路請求以及請求引數。或者當我們程式需要獲取一些模擬資料、模擬圖片時也可以使用它。
如果您閱讀完本文章,覺得對您有幫助,請幫忙點個贊,您的支援是我不竭的創作動力
一、RESTful風格與HTTP method
熟悉RESTful風格的朋友,應該瞭解RESTful風格API使用HTTP method表達對資源的操作。
常用HTTP方法 | RESTful風格語義(操作) |
---|---|
GET | 查詢、獲取資料 |
POST | 新增、提交資料 |
DELETE | 刪除資料 |
PUT | 更新、修改資料 |
HEAD | 獲取HTTP請求頭資料 |
OPTIONS | 判斷URL提供的當前API支援哪些HTTP method方法 |
在前面的章節,我已經為大家詳細的介紹了RestTemplate的GET和POST的相關的使用方法,本節來為大家介紹DELETE、PUT、HEAD、OPTIONS。
二、使用 DELETE方法去刪除資源
刪除一個已經存在的資源,使用RestTemplate的delete(uri)方法。該方法會向URL代表的資源傳送一個HTTP DELETE方法請求。
@Test
void testDelete() {
String url = "http://jsonplaceholder.typicode.com/posts/1";
restTemplate.delete(url);
}
在前面章節測試類的基礎上,寫如上程式碼的測試用例。上面程式碼含義為刪除posts列表裡面的第1個帖子。
二、使用PUT方法去修改資源
修改一個已經存在的資源,使用RestTemplate的put()方法。該方法會向URL代表的資源傳送一個HTTP PUT方法請求。
@Test
void testPut() {
// 請求地址
String url = "http://jsonplaceholder.typicode.com/posts/1";
// 要傳送的資料物件(修改資料)
PostDTO postDTO = new PostDTO();
postDTO.setUserId(110);
postDTO.setTitle("zimug 釋出文章");
postDTO.setBody("zimug 釋出文章 測試內容");
// 傳送PUT請求
restTemplate.put(url, postDTO);
}
上面程式碼RESTful風格語義是:修改posts列表裡面的第1個帖子。
三、通用請求方法exchange方法
exchange方法是一個通用的方法,它可以傳送GET、POST、DELETE、PUT等等HTTP方法請求。
- 下面的兩種方式傳送GET請求效果是一樣的
//使用getForEntity傳送GET請求
ResponseEntity<PostDTO> responseEntity
= restTemplate.getForEntity(url, PostDTO.class);
//使用exchange傳送GET請求
ResponseEntity<PostDTO> responseEntity = restTemplate.exchange(url, HttpMethod.GET,
null, PostDTO.class);
- 下面的兩種方式傳送POST請求效果是一樣的
// 使用postForEntity傳送POST請求
ResponseEntity<String> responseEntity
= restTemplate.postForEntity(url, postDTO, String.class);
// 使用exchange傳送POST請求
ResponseEntity<String> responseEntity
= restTemplate.exchange(url, HttpMethod.POST,null, String.class);
- 下面的兩種方式傳送DELETE請求效果是一樣的,只是一個有返回值,一個返回值為void
// 使用delete傳送DELETE請求,返回值為void
restTemplate.delete(url);
// 使用exchange傳送DELETE請求
ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.DELETE,null,String.class);
上面為大家舉了幾個用exchange()傳送請求的例子,exchange()還能針對很多的HTTP method型別傳送請求,是通用方法!
四、使用HEAD方法獲取HTTP請求頭資料
使用headForHeaders()API 獲取某個資源的URI的請求頭資訊,並且只專注於獲取HTTP請求頭資訊。
@Test
public void testHEAD() {
String url = "http://jsonplaceholder.typicode.com/posts/1";
HttpHeaders httpHeaders = restTemplate.headForHeaders(url);
//斷言該資源介面資料為JSON型別
assertTrue(httpHeaders.getContentType()
.includes(MediaType.APPLICATION_JSON));
System.out.println(httpHeaders);
}
請求頭資訊輸出列印結果如下
五、使用OPTIONS獲取HTTP資源支援的method
下文程式碼使用optionsForAllow測試該URL資源是否支援GET、POST、PUT、DELETE,即增刪改查。
@Test
public void testOPTIONS() {
String url = "http://jsonplaceholder.typicode.com/posts/1";
Set<HttpMethod> optionsForAllow = restTemplate.optionsForAllow(url);
HttpMethod[] supportedMethods
= {HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, HttpMethod.DELETE};
//測試該url資源是否支援GET、POST、PUT、DELETE,即增刪改查
assertTrue(optionsForAllow.containsAll(Arrays.asList(supportedMethods)));
}
歡迎關注我的部落格,裡面有很多精品合集
- 本文轉載註明出處(必須帶連線,不能只轉文字):字母哥部落格。
覺得對您有幫助的話,幫我點贊、分享!您的支援是我不竭的創作動力! 。另外,筆者最近一段時間輸出瞭如下的精品內容,期待您的關注。