숙련주차 추가과제 구현 요구사항을 코딩하던 중,
와 같이, 반환 status code를 지정해주는 디렉션이 있었다. 강의내용에는 없던 내용이라 헤맸는데, ResponseEntity라는 클래스를 알게되었다.
간단한 예시이다. 이렇게 Status값을 OK로 리턴하면 코드200으로 반환된다.
ResponseEntity의 장점은
1. 클라이언트에게 status 코드를 명시적으로 제공할 수 있다.
2. 본문과 헤더를 세밀하게 제어할 수 있다.
3. ResponseEntity를 사용하면 일반적인 객체 또는 커스텀 클래스를 응답으로 반환할 수 있으며, Spring은 자동으로 해당 객체를 적절한 형식으로 변환해준다.
import org.springframework.http.ResponseEntity;
@RestController
@RequestMapping("/api/books")
public class BookController {
@Autowired
private BookService bookService;
@GetMapping("/{id}")
public ResponseEntity<Book> getBookById(@PathVariable Long id) {
Book book = bookService.getBookById(id);
if (book != null) {
return ResponseEntity.ok().body(book);
} else {
return ResponseEntity.notFound().build();
}
}
}
body(entity)를 넣으면, 코드값에 더하여 객체값도 같이 반환할 수 있다.
자주사용되는 반환코드들은 다음과 같다.
HttpStatus.OK: 200 OK
HttpStatus.CREATED: 201 Created
HttpStatus.NO_CONTENT: 204 No Content
HttpStatus.BAD_REQUEST: 400 Bad Request
HttpStatus.UNAUTHORIZED: 401 Unauthorized
HttpStatus.FORBIDDEN: 403 Forbidden
HttpStatus.NOT_FOUND: 404 Not Found
HttpStatus.INTERNAL_SERVER_ERROR: 500 Internal Server Error