[SpringBoot] ResponseEntity.created()

Coastby·2022년 12월 5일
0

LIKELION Back-End School

목록 보기
60/61

ResponseEntity로 상태코드를 지정하기 위한 메서드이다.

ResponseEntity 메서드

status()

created()말고도 HttpStatus 또는 statuscode를 직접 변수로 넣는 status()도 있다.

ok(), of()

ok()는 상태코드 200으로 설정한다. 매개변수를 같이 주면 이는 body에 담기게 된다. of()는 변수로 body가 주어지고, 상태코드는 200으로 자동 설정된다. 만약 Optional.empty()가 변수로 주어지면 NOT FOUND로 상태가 설정된다.

created()

created()는 상태코드 201로 설정된다. 그리고 변수로 URI를 주는데 이는 헤더의 Location에 들어가게 된다.

이외에도 몇 가지 상태코드 설정이 있다.

👉 예제1

@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();
}

👉 예제2

@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();
}

참고

profile
훈이야 화이팅

0개의 댓글