😃 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는 빌더패턴으로도 사용할 수 있다고 한다
다양한 방법을 사용해봐야겠다!