温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-01-04 17:28:21 来源:亿速云 阅读:199 作者:柒染 栏目:大数据

这期内容当中小编将会给大家带来有关POST、DELETE、PUT方法该如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一、RESTful风格与HTTP method

熟悉RESTful风格的朋友,应该了解RESTful风格API使用HTTP method表达对资源的操作。

常用HTTP方法RESTful风格语义(操作)
GET查询、获取数据
POST新增、提交数据
DELETE删除数据
PUT更新、修改数据

在上一篇文章中我们已经为大家介绍了如何使用WebClient作为Http客户端发送GET请求与进行响应结果的接收。本节来为大家介绍POST、DELETE、PUT。

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

  • block()阻塞获取响应结果的方法,subscribe()非阻塞异步结果订阅方法

  • retrieve()获取HTTP响应体,exchange()除了获取HTTP响应体,还可以获取HTTP 状态码、headers、cookies等HTTP报文信息。

  • 使用Mono接收单个对象的响应结果,使用Flux接收集合类对象的响应结果。

  • 占位符语法传参方式

所以想了解以上信息,请去参考: 精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方法详解。 本文只介绍POST、DELETE、PUT在使用过程中与GET不一样的地方。

为了方便后续开发测试,首先介绍一个网站给大家。JSONPlaceholder是一个提供免费的在线REST API的网站,我们在开发时可以使用它提供的url地址测试下网络请求以及请求参数。或者当我们程序需要获取一些模拟数据、模拟图片时也可以使用它。

二、Post请求发送JSON字符串、对象、表单数据

2.1.使用Post方法向服务端发送JSON字符串数据

public class OtherTest {

  //创建webClient
  private WebClient webClient = WebClient.builder()
          .baseUrl("http://jsonplaceholder.typicode.com")
          .build();


  [@Test](https://my.oschina.net/azibug)
  public void testPostJsonStr() {
    // 提交给服务端的JSON字符串
    String jsonStr = "{\"userId\": 1,\"title\": \"zimugtest\",\"body\": \"字母哥进行测试\"}";

    // 发送请求
    Mono<String> mono = webClient
            .post() // POST 请求
            .uri("/posts")  // 请求路径
            .contentType(MediaType.APPLICATION_JSON)  //JSON数据类型
            .body(BodyInserters.fromValue(jsonStr))  //JSON字符串数据
            .retrieve() // 获取响应体
            .bodyToMono(String.class); //响应数据类型转换

    // 输出结果
    System.out.println(mono.block());
  }

}

响应结果打印如下,"http://jsonplaceholder.typicode.com/posts/1" 服务的请求数据就是响应数据。响应结果同样是一个JSON字符串:

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

2.2.将对象以JSON数据形式发送服务端

  [@Test](https://my.oschina.net/azibug)
  public void testPostJson() {
    //构建请求发送对象
    PostDTO postDTO = new PostDTO();
    postDTO.setUserId(110);
    postDTO.setTitle("zimug-test");
    postDTO.setBody("字母哥进行Post测试");

    //发送请求
    Mono<PostDTO> mono = webClient
            .post() // 发送POST 请求
            .uri("/posts")  //服务请求路径,基于baseurl
            .contentType(MediaType.APPLICATION_JSON)  //以JSON数据格式
            .bodyValue(postDTO)   //发送请求体,对象形式
            .retrieve() // 获取响应体
            .bodyToMono(PostDTO.class); //响应数据类型转换

    // 输出结果
    System.out.println("=====" + mono.block());
  }

响应结果打印如下,使用PostDTO接收响应结果。因为 "http://jsonplaceholder.typicode.com/posts/1" 服务的请求数据就是响应数据。打印结果是PostDTO对象的toString()方法

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

2.3.POST模拟表单数据提交

  [@Test](https://my.oschina.net/azibug)
  public void testFormSubmit()  {
    //表单数据参数设置
    MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
    map.add("title", "zimug-test");
    map.add("body", "字母哥进行测试");

    // 发送请求
    Mono<String> mono = webClient
            .post() // 发送POST 请求
            .uri("/posts")  // 请求路径
            .contentType(MediaType.APPLICATION_FORM_URLENCODED)  //表单数据类型
            .body(BodyInserters.fromFormData(map))  //表单数据
            .retrieve() // 获取响应体
            .bodyToMono(String.class); //响应数据类型转换

    // 输出结果
    System.out.println(mono.block());
  }
  
}

因为使用字符串的方式接受响应结果,所以输出和《2.1.使用Post方法向服务端发送JSON字符串数据》输出结果是一样的。

三、使用 DELETE方法去删除资源

删除一个已经存在的资源,使用webClient的delete()方法。该方法会向URL代表的资源发送一个HTTP DELETE方法请求。

[@Test](https://my.oschina.net/azibug)
public void testDelete()  {
  // 发送Delete请求
  webClient.delete().uri("/posts/1");  // 请求路径
}

在前面章节测试类的基础上,写如上代码的测试用例。上面代码含义为删除posts列表里面的第1个帖子。

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

修改一个已经存在的资源,使用webClient的put()方法。该方法会向URL代表的资源发送一个HTTP PUT方法请求。

[@Test](https://my.oschina.net/azibug)
public void testPut()  {
  //要修改的数据对象
  PostDTO postDTO = new PostDTO();
  postDTO.setId(1);
  postDTO.setBody("字母哥进行Put测试");

  Mono<PostDTO> mono = webClient
          .put()
          .uri("/posts/1")  //服务请求路径,基于baseurl
          .contentType(MediaType.APPLICATION_JSON)
          .bodyValue(postDTO)   //发送请求体
          .retrieve() // 获取响应体
          .bodyToMono(PostDTO.class); //响应数据类型转换

  // 输出结果
  System.out.println("=====" + mono.block());
}

上面代码RESTful风格语义是:修改posts列表里面的第1个帖子。输出结果如下,是修改数据之后的结果:

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

上述就是小编为大家分享的POST、DELETE、PUT方法该如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI