[SpringBoot] ResponseEntity.created()

Coastby·2022년 12월 5일

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개의 댓글