DTO - Response / Request
입력값 검증해주는 spring 라이브러리
// build.gradle 추가 **spring 입력값 검증 라이브러리**
implementation 'org.springframework.boot:spring-boot-starter-validation'
**ReplyPostDto.java - 스프링에서 제공하는 검증 언어**
// 클라이언트 -> 서버 / 검증할 땐 request 에서 진행 !
// 📌 댓글 등록할 때 클라이언트로부터 받아야 할 데이터 담는 dto !
public class ReplyPostDto {
// 📌 스프링에서 제공하는 입력값 검증
// NotNull : null만 허용 안됨.
// NotEmpty : null은 되는데 빈 문자는 안됨.
// NotBlank : null도 안되고 빈 문자도 안됨.
@NotBlank
@Size(min = 1, max = 300) // if 조건문 대신 - 범위 내용 1 ~ 300까지
private String text; // 댓글 내용
@NotBlank
@Size(min = 2, max = 8)
private String author; // 댓글 작성자
@NotNull
private Long bno; // 댓글 남길 원본 글번호
}
----------------> request DTO에서 검증 진행 후 DTO 사용하는 Controller에 @Validation 추가 !
@BindingResult 에러 메세지 직접 작성하여 클라이언트에게 전달 !
// 댓글 생성 요청
// @RequestBody - 클라이언트가 전송한 데이터를 JSON으로 받아서 파싱 !
@PostMapping // 검증 사용한 dto 컨트롤러에 @Validated !
public ResponseEntity<?> posts(@Validated @RequestBody ReplyPostDto dto, BindingResult result) { // 입력값 검증 결과 데이터를 갖고 있는 객체
log.info("/api/v1/replies : POST");
log.debug("parameter : {}" , dto);
**// 입력값 검증에러가 발견됐다면 ! -> 클라이언트에게 보낼 에러 메세지를 직접 작성 가능 !
if (result.hasErrors()) {
// 키 - property 값 - 에러 메세지
Map<String, String> errors = makeValidationMessageMap(result);
return ResponseEntity
.badRequest()
.body(errors);
}**
// 댓글 등록 상태 boolean으로 log 출력되게 !
boolean flag = replyService.register(dto);
if (!flag) return ResponseEntity
.internalServerError()
.body("댓글 등록 실패");
return ResponseEntity
.ok()
.body(replyService.getReplies(dto.getBno()));
}
**private Map<String, String> makeValidationMessageMap(BindingResult result) {
Map<String, String> errors = new HashMap<>();**
// 에러정보가 모여있는 리스트
List<FieldError> fieldErrors = result.getFieldErrors();
for (FieldError error : fieldErrors) {
errors.put(error.getField(), error.getDefaultMessage());
}
return errors;
}
ReplyMapper.java → ReplyMapper.xml → ReplyService.java
📌📌Board에 댓글 등록하기 기초 시작 - javascript
https://antitifragile.notion.site/3-AJAX-4640a8f5c52f4001aaadfc87af3ad934