본문 바로가기
프로그래밍/Spring

스프링 MVC Location 헤더에 리소스URI 설정 예제

by Mr-후 2019. 4. 19.
반응형

스프링 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를 설정한다. 

*/

}

....

}

반응형