메소드 | 기능 |
---|---|
delete | 지정된 URL 리소스에 HTTP DELETE 수행 |
exchange | 지정된 HTTP 메소드를 URL에 대해 실행. 응답 body와 연결된 객체를 포함하는 ResponseEntity 반환 |
execute | 지정된 HTTP 메소드를 URL에 대해 실행. 응답 body와 연결되는 객체 반환 |
getForEntity | HTTP GET 요청 전송. 응답 body와 연결된 객체를 포함한 ResponseEntity 반환 |
getForObject | HTTP GET 요청 전송. 응답 body와 연결된 객체 반환 |
headForHeaders | HTTP HEAD 요청 전송. 지정된 리소스 URL의 HTTP 헤더 반환 |
optionsForAllow | HTTP OPTIONS 요청 전송. 지정된 URL의 Allow 헤더 반환 |
patchForObject | HTTP PATCH 요청 전송. 응답 body와 연결된 결과 객체 반환 |
postForEntity | URL에 데이터 POST. 응답 body와 연결된 객체를 포함하는 ResponseEntity 반환 |
postForLocation | URL에 데이터 POST. 새로 생성된 리소스의 URL 반환 |
postForObject | URL에 데이터 POST. 응답 body에 연결된 객체 반환 |
put | 리소스 데이터를 지정된 URL에 PUT |
Traverson
// Traverson을 기본 URL로 지정
Traverson traverson = new Traverson(
URI.create("http://localhost:8080/api"), MediaTypes.HAL_JSON);
// 반환 리소스 타입 지정
ParameterizedTypeReference<CollectionModel<Ingredient>> ingredientType =
new ParameterizedTypeReference<CollectionModel<Ingredient>>() {};
CollectionModel<Ingredient> ingredients =
traverson
.follow("ingredients") ← 관계이름이 ingredients인 리소스로 이동
.object(ingredientType); ← 해당 리소스의 콘텐츠를 get (타입은 ingredientType)
RestTemplate vs Traverson?
private Ingredient addIngredient(Ingredient ingredient) {
// Traverson 활용 API 이동
String ingredientsUrl = traverson
.follow("ingredients")
.asLink() ← 링크 자체를 요청
.getHref(); ← 링크의 URL을 반환
// RestTemplate 활용 ingredient POST
return rest.postForObject(ingredientsUrl, ingredients, Ingredient.class);