使用 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()
方法,並且你必須建立它的子類。在上面的示例中,使用了匿名類。