這篇來介紹API client的程式,Spring提供了RestTemplate這個類別,其內定義好了諸多實用的方法來call API,不過主要分成三種方法簽章:
1.傳入String URL以及直接傳入vararg所需參數
public Ingredient getIngredientById(String ingredientId) {
return rest.getForObject("http://localhost:8081/ingredients/{id}",
Ingredient.class, ingredientId);
}
2.傳入String URL,並將參數整理為Map
public Ingredient getIngredientById(String ingredientId) {
Map<String, String> urlVariables = new HashMap<>();
urlVariables.put("id", ingredientId);
return rest.getForObject("http://localhost:8081/ingredients/{id}",
Ingredient.class, urlVariables);
}
3.傳入一個URI物件,URI內會包含要打的URL和參數
public Ingredient getIngredientById(String ingredientId) {
Map<String, String> urlVariables = new HashMap<>();
urlVariables.put("id", ingredientId);
URI url = UriComponentsBuilder
.fromHttpUrl("http://localhost:8081/ingredients/{id}")
.build(urlVariables);
return rest.getForObject(url, Ingredient.class);
}
而常用的方法除了getForObject,會將response body轉譯為object外,還有getForEntity會回傳ResponseEntity,其內會包含諸如header之類的其他http資訊。
若要打POST,可以用postForObject,或是postForLocation會回傳一個URI物件。