欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

RestTemplate的DELETE及PUT等請(qǐng)求方法使用精講

 更新時(shí)間:2022年03月17日 10:17:16   作者:字母哥哥  
這篇文章主要為大家介紹了RestTemplate的DELETE及PUT等請(qǐng)求方法的使用精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

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

RestTemplate在Spring或非Spring環(huán)境下使用精講

RestTemplate實(shí)現(xiàn)多種底層HTTP客戶端類庫(kù)的切換用法

RestTemplate發(fā)送HTTP GET請(qǐng)求使用方法詳解

RestTemplate發(fā)送HTTP POST請(qǐng)求使用方法詳解

為了方便后續(xù)開發(fā)測(cè)試,首先介紹一個(gè)網(wǎng)站給大家。JSONPlaceholder是一個(gè)提供免費(fèi)的在線REST API的網(wǎng)站,我們?cè)陂_發(fā)時(shí)可以使用它提供的url地址測(cè)試下網(wǎng)絡(luò)請(qǐng)求以及請(qǐng)求參數(shù)?;蛘弋?dāng)我們程序需要獲取一些模擬數(shù)據(jù)、模擬圖片時(shí)也可以使用它。

一、RESTful風(fēng)格與HTTP method

熟悉RESTful風(fēng)格的朋友,應(yīng)該了解RESTful風(fēng)格API使用HTTP method表達(dá)對(duì)資源的操作。

常用HTTP方法RESTful風(fēng)格語(yǔ)義(操作)
GET查詢、獲取數(shù)據(jù)
POST新增、提交數(shù)據(jù)
DELETE刪除數(shù)據(jù)
PUT更新、修改數(shù)據(jù)
HEAD獲取HTTP請(qǐng)求頭數(shù)據(jù)
OPTIONS判斷URL提供的當(dāng)前API支持哪些HTTP method方法

在前面的章節(jié),我已經(jīng)為大家詳細(xì)的介紹了RestTemplate的GET和POST的相關(guān)的使用方法,本節(jié)來(lái)為大家介紹DELETE、PUT、HEAD、OPTIONS。

二、使用 DELETE方法去刪除資源

刪除一個(gè)已經(jīng)存在的資源,使用RestTemplate的delete(uri)方法。該方法會(huì)向URL代表的資源發(fā)送一個(gè)HTTP DELETE方法請(qǐng)求。

@Test
void testDelete()  {
   String url = "http://jsonplaceholder.typicode.com/posts/1";
   restTemplate.delete(url);
}

在前面章節(jié)測(cè)試類的基礎(chǔ)上,寫如上代碼的測(cè)試用例。上面代碼含義為刪除posts列表里面的第1個(gè)帖子。

三、使用PUT方法去修改資源

修改一個(gè)已經(jīng)存在的資源,使用RestTemplate的put()方法。該方法會(huì)向URL代表的資源發(fā)送一個(gè)HTTP PUT方法請(qǐng)求。

@Test
void testPut()  {
   // 請(qǐng)求地址
   String url = "http://jsonplaceholder.typicode.com/posts/1";
   // 要發(fā)送的數(shù)據(jù)對(duì)象(修改數(shù)據(jù))
   PostDTO postDTO = new PostDTO();
   postDTO.setUserId(110);
   postDTO.setTitle("zimug 發(fā)布文章");
   postDTO.setBody("zimug 發(fā)布文章 測(cè)試內(nèi)容");
   // 發(fā)送PUT請(qǐng)求
   restTemplate.put(url, postDTO);
}

上面代碼RESTful風(fēng)格語(yǔ)義是:修改posts列表里面的第1個(gè)帖子。

三、通用請(qǐng)求方法exchange方法

exchange方法是一個(gè)通用的方法,它可以發(fā)送GET、POST、DELETE、PUT等等HTTP方法請(qǐng)求。

下面的兩種方式發(fā)送GET請(qǐng)求效果是一樣的

//使用getForEntity發(fā)送GET請(qǐng)求
ResponseEntity<PostDTO> responseEntity
            = restTemplate.getForEntity(url, PostDTO.class);
//使用exchange發(fā)送GET請(qǐng)求
ResponseEntity<PostDTO> responseEntity = restTemplate.exchange(url, HttpMethod.GET,
            null, PostDTO.class);

下面的兩種方式發(fā)送POST請(qǐng)求效果是一樣的

// 使用postForEntity發(fā)送POST請(qǐng)求
ResponseEntity<String> responseEntity
            = restTemplate.postForEntity(url, postDTO, String.class);
// 使用exchange發(fā)送POST請(qǐng)求
ResponseEntity<String> responseEntity
            = restTemplate.exchange(url, HttpMethod.POST,null, String.class);

下面的兩種方式發(fā)送DELETE請(qǐng)求效果是一樣的,只是一個(gè)有返回值,一個(gè)返回值為void

// 使用delete發(fā)送DELETE請(qǐng)求,返回值為void
restTemplate.delete(url);
// 使用exchange發(fā)送DELETE請(qǐng)求
ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.DELETE,null,String.class);

上面為大家舉了幾個(gè)用exchange()發(fā)送請(qǐng)求的例子,exchange()還能針對(duì)很多的HTTP method類型發(fā)送請(qǐng)求,是通用方法!

四、使用HEAD方法獲取HTTP請(qǐng)求頭數(shù)據(jù)

使用*headForHeaders()*API 獲取某個(gè)資源的URI的請(qǐng)求頭信息,并且只專注于獲取HTTP請(qǐng)求頭信息。

@Test
public void testHEAD()  {
   String url = "http://jsonplaceholder.typicode.com/posts/1";
   HttpHeaders httpHeaders  = restTemplate.headForHeaders(url);
   //斷言該資源接口數(shù)據(jù)為JSON類型
   assertTrue(httpHeaders.getContentType()
               .includes(MediaType.APPLICATION_JSON));
   System.out.println(httpHeaders);
}

請(qǐng)求頭信息輸出打印結(jié)果如下

五、使用OPTIONS獲取HTTP資源支持的method

下文代碼使用optionsForAllow測(cè)試該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};
   //測(cè)試該url資源是否支持GET、POST、PUT、DELETE,即增刪改查
   assertTrue(optionsForAllow.containsAll(Arrays.asList(supportedMethods)));
}

以上就是RestTemplate的DELETE及PUT等請(qǐng)求方法使用精講的詳細(xì)內(nèi)容,更多關(guān)于RestTemplate的DELETE及PUT等請(qǐng)求用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談js文件引用方式及其同步執(zhí)行與異步執(zhí)行

    淺談js文件引用方式及其同步執(zhí)行與異步執(zhí)行

    下面小編就為大家?guī)?lái)一篇淺談js文件引用方式及其同步執(zhí)行與異步執(zhí)行。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • 解決java項(xiàng)目jar打包后讀取文件失敗的問(wèn)題

    解決java項(xiàng)目jar打包后讀取文件失敗的問(wèn)題

    這篇文章主要介紹了解決java項(xiàng)目jar打包后讀取文件失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 淺談Java的SPI技術(shù)

    淺談Java的SPI技術(shù)

    這篇文章主要介紹了Java的SPI技術(shù)的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 淺談java面向?qū)ο蟮臄?shù)組化信息處理

    淺談java面向?qū)ο蟮臄?shù)組化信息處理

    下面小編就為大家?guī)?lái)一篇淺談java面向?qū)ο蟮臄?shù)組化信息處理。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java連接MySQL8.0 JDBC的詳細(xì)步驟(IDEA版本)

    Java連接MySQL8.0 JDBC的詳細(xì)步驟(IDEA版本)

    這篇文章主要介紹了Java連接MySQL8.0 JDBC的詳細(xì)步驟(IDEA版本),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • IDEA教程創(chuàng)建SpringBoot前后端分離項(xiàng)目示例圖解

    IDEA教程創(chuàng)建SpringBoot前后端分離項(xiàng)目示例圖解

    在使用spring、mybatis等框架時(shí),配置文件很復(fù)雜,有時(shí)復(fù)雜的讓人想放棄Java,使用C#。springboot出現(xiàn)這一切問(wèn)題就都不是問(wèn)題
    2021-10-10
  • JMeter自定義日志與日志分析的實(shí)現(xiàn)

    JMeter自定義日志與日志分析的實(shí)現(xiàn)

    JMeter與Java程序一樣,會(huì)記錄事件日志,本文就介紹一下JMeter自定義日志與日志分析的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • SpringBoot測(cè)試junit遇到的坑及解決

    SpringBoot測(cè)試junit遇到的坑及解決

    這篇文章主要介紹了SpringBoot測(cè)試junit遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java Unsafe詳細(xì)解析

    java Unsafe詳細(xì)解析

    Unsafe為我們提供了訪問(wèn)底層的機(jī)制,這種機(jī)制僅供java核心類庫(kù)使用,而不應(yīng)該被普通用戶使用。但是,為了更好地了解java的生態(tài)體系,我們應(yīng)該去學(xué)習(xí)它,去了解它,不求深入到底層的C/C++代碼,但求能了解它的基本功能。下面小編來(lái)和大家一起學(xué)習(xí)
    2019-05-05
  • Java并發(fā)編程之顯式鎖機(jī)制詳解

    Java并發(fā)編程之顯式鎖機(jī)制詳解

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)編程之顯式鎖機(jī)制的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評(píng)論