TIL:) ResponseEntity

😃 Today I Leaned

  • SpringBoot

⭐알게 된 점⭐

ResponseEntity

  • HttpEntity를 상속받아 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스
  • 사용자의 HttpRequest에 대한 응답 데이터가 포함됨
  • 구조
    • HttpStatus
    • HttpHeader : 요청/응답에 대한 요구사항
    • HttpBody : 내용

 

ResponseEntity를 이용해 클라이언트에게 응답 보내기

@Data
public class Message {

    private int statusCode;
    private String message;
 // private Object data;

    public Message() {
        this.statusCode = 200;
        this.message = null;
      //this.data = null;
    }

    public Message(int statusCode, String msg) {
        this.statusCode = statusCode;
        this.message = msg;
    }
}
  • Message 클래스 생성
    • 상태코드 / 메시지/ 데이터를 담을 필드 준비 ( 상태코드와 메시지만 응답을 보내기 위해 data는 주석처리함 )
    @PostMapping("/user/signup")
    public ResponseEntity<Message> signup(@RequestBody @Valid UserRequestDto.SignupRequestDto requestDto, BindingResult bindingResult) {
        Message message = new Message();

        // Validation 예외처리
        List<FieldError> fieldErrors = bindingResult.getFieldErrors();
        if(fieldErrors.size() > 0) {
            for (FieldError fieldError : bindingResult.getFieldErrors()) {
                log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
            }
            message.setStatusCode(404);
            message.setMessage("회원가입에 실패하였습니다");
            return new ResponseEntity<Message>(message, HttpStatus.NOT_FOUND);
        }

        return userService.signup(requestDto);
    }
  • 회원가입을 위한 PostMapping을 Controller에 선언
    • Message 클래스를 통해 StatusCode와 Message를 담아 클라이언트에게 응답을 전송

🐰 END

ResponseEntity는 빌더패턴으로도 사용할 수 있다고 한다

다양한 방법을 사용해봐야겠다!

BELATED ARTICLES

more