스프링 MVC Location 헤더에 리소스URI 설정 예제
본 예제는 JpaRepository를 사용해서 save()메서드 후 추가된 사용자에 대한 id를 반환해서 추가된 사용자 정보가 제대로 들어갔는지 확인하는 페이지로 이동할 URI를 만들어주기 위한 예제인데 자바의 URI와 UriComponentBuilder를 이용해서 HttpHeaders에 추가하는 예제이다.
@RestController
@RequestMapping("api/customers")
public class CustomerRestController {
...
@RequestMapping(method = RequestMethod.POST)
ResponseEntity<Customer>postCustomers(@RequestBody Customer customer, UriComponentsBuilder uriBuilder) {
/**
* 컨텍스트 상대 경로 URI를 쉽게 만들게 해주는 UriComponentsBuilder를 컨트롤러 메서드의 인자로 지정
*/
Customer created = customerService.create(customer);
URI location = uriBuilder.path("api/customers/{id}")
.buildAndExpand(created.getId()).toUri();
/**
* UriComponentsBuilder와 Customer객체의 id로 리소스 URI를 만든다. path()메서드에 있는 {id}는 플레이스 홀더며, buildAndExpand() 메서드에 넘겨준 값으로 치환된다.
*/
HttpHeaders headers = new HttpHeaders();
headers.setLocation(location);
/**
* HttpHeaders객체로 HTTP응답 헤더를 만들고 location을 설정한다.
*/
return new ResponseEntity<>(created, headers, HttpStatus.CREATED);
/**
* HTTP 응답 헤더를 설정하려면 메서드에서 Customer객체가 아닌 ResponseEntity객체를 반환한다. ResponseEntity객체에는 응답 헤더인 HttpHeaders객체, 상태 코드인 HttpStatus를 설정한다.
*/
}
....
}
'프로그래밍 > Spring' 카테고리의 다른 글
@RequestMapping의 params (0) | 2019.04.23 |
---|---|
@ModelAttribute와 @Validated를 이용한 Form요소 전달 예제 (0) | 2019.04.19 |
JPA를 이용한 페이징 처리 구현 예제 (0) | 2019.04.17 |
@Query어노테이션, JPQL(Java Persistence Query Language) (0) | 2019.04.17 |
Log4JDBC로 SQL 로그 출력을 위한 설정 (0) | 2019.04.17 |