精講RestTemplate第5篇-DELETE、PUT等請求方法使用詳解


本文是精講RestTemplate第5篇,前篇的blog訪問地址如下:

為了方便后續開發測試,首先介紹一個網站給大家。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)));
}

歡迎關注我的博客,里面有很多精品合集

  • 本文轉載注明出處(必須帶連接,不能只轉文字):字母哥博客

覺得對您有幫助的話,幫我點贊、分享!您的支持是我不竭的創作動力! 。另外,筆者最近一段時間輸出了如下的精品內容,期待您的關注。


免責聲明!

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



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