关于spring:精讲RestTemplate第5篇DELETEPUT等请求方法使用详解

44次阅读

共计 3070 个字符,预计需要花费 8 分钟才能阅读完成。

本文是精讲 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)));
}

欢送关注我的博客,外面有很多精品合集

  • 本文转载注明出处(必须带连贯,不能只转文字):字母哥博客。

感觉对您有帮忙的话,帮我点赞、分享!您的反对是我不竭的创作能源!。另外,笔者最近一段时间输入了如下的精品内容,期待您的关注。

  • 《手摸手教你学 Spring Boot2.0》
  • 《Spring Security-JWT-OAuth2 一本通》
  • 《实战前后端拆散 RBAC 权限管理系统》
  • 《实战 SpringCloud 微服务从青铜到王者》
  • 《VUE 深入浅出系列》

正文完
 0