일반적으로 REST API를 만들게 되면 SpringBoot에서는 @RestController
를 이용하여 JSON 형식으로 값을 반환하게 됩니다. 일반적으로 데이터를 반환할 때 StatusCode
까지 넘겨주는 방식이 ResponseEntity
그리고 @ResponseStatus
가 있습니다.
ResponseEntity는 HTTP 요청에 의한 HttpStatus, HttpHeader와 HttpBody를 포함하는 HttpEntity 클래스를 상속받습니다.
헤더
와 바디
, 상태코드
로 구성되어있고 http 응답을 나타낼 때 사용
HttpEntity( http 헤더, 바디 ) 를 상속 받았고, HttpStatus 상태코드를 추가 할 수 있습니다.
return new ResponseEntity<>(body, header, HttpStatus.OK);
// 주로 create
// ex. return new ResponseEntity<>(dto, HttpStatus.CREATED);
or
return ResponseEntity.ok(dto); // HttpStatus.OK
or
public static ResponseEntity error(HttpHeaders headers, int statusCode, int errorCode, String message, Object data, DialogDto dialogDto, String execuse) {
return ResponseEntity
.status(statusCode)
.headers(headers)
.body(Dto.builder()
.code(errorCode)
.message(message)
.data(data)
.dialog(dialogDto)
.build());
위 방식들로 ResponseEntity
객체를 컨트롤 할 수 있습니다.
ResponseEntity 객체 대신 StatusCode를 retuen하고 싶을 때 방법이 또 한가지 있습니다. 바로 @ResponseStatus
를 사용하는 것입니다.
파라미터로 HttpStatus 객체를 가져와 StatusCode를 보내줄 수 있습니다.
@GetMapping
@ResponseStatus(HttpStatus.OK)
public String isOk(){
return okService.getAll();
}