目录
概述
本篇文章将介绍如何使用RestTemplate,需要注意的是新版的spring framework,由于有WebFlux的加持,Spring提供了一个新版的Rest Client,叫做WebClient,用来替代RestTemplate,WebClient可以提供传统RestTemplate的同步调用,也可以提供异步非阻塞的方式调用。如果你在构建一个新的服务或者在进行系统升级,考虑使用WebClient,因为在之后的版本中spring将会逐步弃用RestTemplate。
使用GET方式获取资源
通过普通的JSON格式
一个最简单的例子就是通过getForEntity(),可以获取到返回的所有内容
RestTemplate restTemplate = new RestTemplate();
String fooResourceUrl
= "http://localhost:8080/spring-rest/foos";
ResponseEntity<String> response
= restTemplate.getForEntity(fooResourceUrl + "/1", String.class);
Assertions.assertEquals(response.getStatusCode(), HttpStatus.OK);
如果我们需要响应中的某些字段,则需要使用Jackson包去解析字符串
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(response.getBody());
JsonNode name = root.path("name");
Assertions.assertNotNull(name.asText());
通过POJO方式
如果我们只关心返回消息体内容,我们使用POJO方式,则需要有一个DTO,用来转化资源格式。
public class Foo implements Serializable {
private long id;
private String name;
// getters and setters
}
Foo foo = restTemplate
.getForObject(fooResourc