ResponseEntity로 상태코드를 지정하기 위한 메서드이다.
status()
created()
말고도 HttpStatus
또는 statuscode
를 직접 변수로 넣는 status()
도 있다.
ok()
, of()
ok()
는 상태코드 200으로 설정한다. 매개변수를 같이 주면 이는 body에 담기게 된다. of()
는 변수로 body가 주어지고, 상태코드는 200으로 자동 설정된다. 만약 Optional.empty()가 변수로 주어지면 NOT FOUND로 상태가 설정된다.
created()
created()
는 상태코드 201로 설정된다. 그리고 변수로 URI를 주는데 이는 헤더의 Location에 들어가게 된다.
이외에도 몇 가지 상태코드 설정이 있다.
@Tag(name = "도서 정보")
@Operation(summary = "도서 정보 등록", description = "도서 정보를 등록한다.")
@PostMapping("")
private ResponseEntity<BookAddResponse> addBook(@RequestBody BookAddRequest bookAddRequest) {
log.info("addBook - Call");
BookAddResponse bookAddResponse = bookService.addBook(bookAddRequest);
return ResponseEntity
.created(URI.create("/api/v1/books/" + bookAddResponse.getBookId()))
.build();
}
@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user) {
User savedUser = service.save(user);
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(savedUser.getId())
.toUri();
return ResponseEntity.created(location).build();
}