使用 RestTemplate(GET) 使用 REST API
要使用 RestTemplate
使用 REST API,请使用 Spring boot initialzr 创建一个 Spring 启动项目,并确保添加了 Web 依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
一旦你设置了你的项目 ,创建一个 RestTemplate
豆。你可以在已生成的主类中执行此操作,也可以在单独的配置类(使用 @Configuration
注释的类)中执行此操作:
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
之后,创建一个域类,类似于创建 REST 服务时的操作方法 。
public class User {
private Long id;
private String username;
private String firstname;
private String lastname;
public Long getId() {
return id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
}
在你的客户端,自动连接 RestTemplate
:
@Autowired
private RestTemplate restTemplate;
要使用返回单个用户的 REST API,你现在可以使用:
String url = "http://example.org/path/to/api";
User response = restTemplate.getForObject(url, User.class);
使用返回列表或用户数组的 REST API,你有两个选择。将它作为数组使用:
String url = "http://example.org/path/to/api";
User[] response = restTemplate.getForObject(url, User[].class);
或者使用 ParameterizedTypeReference
消费它:
String url = "http://example.org/path/to/api";
ResponseEntity<List<User>> response = restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<List<User>>() {});
List<User> data = response.getBody();
请注意,使用 ParameterizedTypeReference
时,你必须使用更高级的 RestTemplate.exchange()
方法,并且你必须创建它的子类。在上面的示例中,使用了匿名类。