真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

POST、DELETE、PUT方法該如何使用

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)POST、DELETE、PUT方法該如何使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)服務(wù)項目包括愛民網(wǎng)站建設(shè)、愛民網(wǎng)站制作、愛民網(wǎng)頁制作以及愛民網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,愛民網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到愛民省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

一、RESTful風格與HTTP method

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

常用HTTP方法RESTful風格語義(操作)
GET查詢、獲取數(shù)據(jù)
POST新增、提交數(shù)據(jù)
DELETE刪除數(shù)據(jù)
PUT更新、修改數(shù)據(jù)

在上一篇文章中我們已經(jīng)為大家介紹了如何使用WebClient作為Http客戶端發(fā)送GET請求與進行響應(yīng)結(jié)果的接收。本節(jié)來為大家介紹POST、DELETE、PUT。

POST等其他的方法在與GET方法在使用如下方法的時候是一致的:

  • block()阻塞獲取響應(yīng)結(jié)果的方法,subscribe()非阻塞異步結(jié)果訂閱方法

  • retrieve()獲取HTTP響應(yīng)體,exchange()除了獲取HTTP響應(yīng)體,還可以獲取HTTP 狀態(tài)碼、headers、cookies等HTTP報文信息。

  • 使用Mono接收單個對象的響應(yīng)結(jié)果,使用Flux接收集合類對象的響應(yīng)結(jié)果。

  • 占位符語法傳參方式

所以想了解以上信息,請去參考: 精講響應(yīng)式WebClient第2篇-GET請求阻塞與非阻塞調(diào)用方法詳解。 本文只介紹POST、DELETE、PUT在使用過程中與GET不一樣的地方。

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

二、Post請求發(fā)送JSON字符串、對象、表單數(shù)據(jù)

2.1.使用Post方法向服務(wù)端發(fā)送JSON字符串數(shù)據(jù)

public class OtherTest {

  //創(chuàng)建webClient
  private WebClient webClient = WebClient.builder()
          .baseUrl("http://jsonplaceholder.typicode.com")
          .build();


  [@Test](https://my.oschina.net/azibug)
  public void testPostJsonStr() {
    // 提交給服務(wù)端的JSON字符串
    String jsonStr = "{\"userId\": 1,\"title\": \"zimugtest\",\"body\": \"字母哥進行測試\"}";

    // 發(fā)送請求
    Mono mono = webClient
            .post() // POST 請求
            .uri("/posts")  // 請求路徑
            .contentType(MediaType.APPLICATION_JSON)  //JSON數(shù)據(jù)類型
            .body(BodyInserters.fromValue(jsonStr))  //JSON字符串數(shù)據(jù)
            .retrieve() // 獲取響應(yīng)體
            .bodyToMono(String.class); //響應(yīng)數(shù)據(jù)類型轉(zhuǎn)換

    // 輸出結(jié)果
    System.out.println(mono.block());
  }

}

響應(yīng)結(jié)果打印如下,"http://jsonplaceholder.typicode.com/posts/1" 服務(wù)的請求數(shù)據(jù)就是響應(yīng)數(shù)據(jù)。響應(yīng)結(jié)果同樣是一個JSON字符串:

POST、DELETE、PUT方法該如何使用

2.2.將對象以JSON數(shù)據(jù)形式發(fā)送服務(wù)端

  [@Test](https://my.oschina.net/azibug)
  public void testPostJson() {
    //構(gòu)建請求發(fā)送對象
    PostDTO postDTO = new PostDTO();
    postDTO.setUserId(110);
    postDTO.setTitle("zimug-test");
    postDTO.setBody("字母哥進行Post測試");

    //發(fā)送請求
    Mono mono = webClient
            .post() // 發(fā)送POST 請求
            .uri("/posts")  //服務(wù)請求路徑,基于baseurl
            .contentType(MediaType.APPLICATION_JSON)  //以JSON數(shù)據(jù)格式
            .bodyValue(postDTO)   //發(fā)送請求體,對象形式
            .retrieve() // 獲取響應(yīng)體
            .bodyToMono(PostDTO.class); //響應(yīng)數(shù)據(jù)類型轉(zhuǎn)換

    // 輸出結(jié)果
    System.out.println("=====" + mono.block());
  }

響應(yīng)結(jié)果打印如下,使用PostDTO接收響應(yīng)結(jié)果。因為 "http://jsonplaceholder.typicode.com/posts/1" 服務(wù)的請求數(shù)據(jù)就是響應(yīng)數(shù)據(jù)。打印結(jié)果是PostDTO對象的toString()方法

POST、DELETE、PUT方法該如何使用

2.3.POST模擬表單數(shù)據(jù)提交

  [@Test](https://my.oschina.net/azibug)
  public void testFormSubmit()  {
    //表單數(shù)據(jù)參數(shù)設(shè)置
    MultiValueMap map = new LinkedMultiValueMap<>();
    map.add("title", "zimug-test");
    map.add("body", "字母哥進行測試");

    // 發(fā)送請求
    Mono mono = webClient
            .post() // 發(fā)送POST 請求
            .uri("/posts")  // 請求路徑
            .contentType(MediaType.APPLICATION_FORM_URLENCODED)  //表單數(shù)據(jù)類型
            .body(BodyInserters.fromFormData(map))  //表單數(shù)據(jù)
            .retrieve() // 獲取響應(yīng)體
            .bodyToMono(String.class); //響應(yīng)數(shù)據(jù)類型轉(zhuǎn)換

    // 輸出結(jié)果
    System.out.println(mono.block());
  }
  
}

因為使用字符串的方式接受響應(yīng)結(jié)果,所以輸出和《2.1.使用Post方法向服務(wù)端發(fā)送JSON字符串數(shù)據(jù)》輸出結(jié)果是一樣的。

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

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

[@Test](https://my.oschina.net/azibug)
public void testDelete()  {
  // 發(fā)送Delete請求
  webClient.delete().uri("/posts/1");  // 請求路徑
}

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

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

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

[@Test](https://my.oschina.net/azibug)
public void testPut()  {
  //要修改的數(shù)據(jù)對象
  PostDTO postDTO = new PostDTO();
  postDTO.setId(1);
  postDTO.setBody("字母哥進行Put測試");

  Mono mono = webClient
          .put()
          .uri("/posts/1")  //服務(wù)請求路徑,基于baseurl
          .contentType(MediaType.APPLICATION_JSON)
          .bodyValue(postDTO)   //發(fā)送請求體
          .retrieve() // 獲取響應(yīng)體
          .bodyToMono(PostDTO.class); //響應(yīng)數(shù)據(jù)類型轉(zhuǎn)換

  // 輸出結(jié)果
  System.out.println("=====" + mono.block());
}

上面代碼RESTful風格語義是:修改posts列表里面的第1個帖子。輸出結(jié)果如下,是修改數(shù)據(jù)之后的結(jié)果:

POST、DELETE、PUT方法該如何使用

上述就是小編為大家分享的POST、DELETE、PUT方法該如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞名稱:POST、DELETE、PUT方法該如何使用
當前網(wǎng)址:http://weahome.cn/article/ipgseh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部