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