Начиная с весны 3.1, лучший способ обработать Локацию - использовать параметр UriComponentBuilder
и установить для него возвращенное значение ResponseEntity
.UriComponentBuilder
знает контекст и манипулирует относительными путями:
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> createCustomer(UriComponentsBuilder b) {
UriComponents uriComponents =
b.path("/customers/{id}").buildAndExpand(id);
HttpHeaders headers = new HttpHeaders();
headers.setLocation(uriComponents.toUri());
return new ResponseEntity<Void>(headers, HttpStatus.CREATED);
}
Начиная с версии 4.1, вы можете сделать его еще короче
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> createCustomer(UriComponentsBuilder b) {
UriComponents uriComponents =
b.path("/customers/{id}").buildAndExpand(id);
return ResponseEntity.created(uriComponents.toUri()).build();
}
Благодаря Дитеру Хубау за указание на это.