本文是精讲 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 深入浅出系列》