검증 모듈(validation) 사용 가이드
개요
캐모마일 프레임워크의 패턴 기반(정규식) 검증 모듈은 데이터의 유효성을 효과적으로 검사하고 신뢰성을 보장합니다.
이 모듈은 정교한 정규식을 활용하여 다양한 데이터 입력을 체계적으로 검증합니다.
이를 통해 시스템의 안정성을 높이고 데이터 무결성을 유지할 수 있습니다.
사용법
dependency 주입(pom.xml)
어노테이션 적용법
객체 VO 설정
검증을 하기 위한 객체에 @Pattern 어노테이션과 patternType을 설정합니다.
@Pattern(patternType = PatternType.JUMIN_NUMBER) private String juminNumber; @Pattern(patternType = PatternType.PHONE_NUMBER) private String phone; @Pattern(patternType = PatternType.ACCOUNT) private String account; @Pattern(patternType = PatternType.CREDIT) private String credit; @Pattern(patternType = PatternType.PASSPORT_NUMBER) private String passport;Controller 설정
검증이 필요한 controller의 파라미터 앞에 @Valid 혹은 @Validated 애노테이션을 붙여줍니다.@PostMapping("/create") public ChamomileResponse<Void> createUser(@Validated @RequestBody List<UserVO> request) { userService.createUser(request); return new ChamomileResponse<>(); } @PostMapping("/update") public ChamomileResponse<Void> updateUser(@Valid @RequestBody List<UserVO> request) { userService.updateUser(request); return new ChamomileResponse<>(); }
예외처리
패턴 기반 검증 모듈을 사용할 때 발생할 수 있는 주요 예외와 그 처리 방법에 대해 설명합니다.
예외처리 내용
javax.validation.ValidationException: HV000028: Unexpected exception during isValid call. Caused by: net.lotte.chamomile.core.exception.ChamomileException: Invalid phone number pattern이 예외는 특정 패턴이 유효하지 않을 때 발생합니다. 예를 들어, 위의 로그는 잘못된 전화번호 형식이 입력된 경우 다음과 같은 메시지가 반환됩니다.
타입별 메시지
CREDIT("Invalid Credit number pattern"), ACCOUNT("Invalid Account number pattern" JUMIN_NUMBER("Invalid Jumin number pattern"), PASSPORT_NUMBER("Invalid passport number pattern"), PHONE_NUMBER("Invalid phone number pattern");예외 처리 방법
사용자 메시지: 사용자에게 적절한 메시지를 반환하여 입력 형식의 오류를 명확히 전달합니다.
@PostMapping("/create") public ChamomileResponse<Void> createUser(@Validated @RequestBody UserVO request) { try { userService.createUser(request); return new ChamomileResponse<>(); } catch (ChamomileException e) { return new ChamomileResponse<>(HttpStatus.BAD_REQUEST, e.getMessage()); } }
Pattern Type의 범위
CREDIT
CreditCard, Master, Visa, KoreaCard, amex, DinnerClub1, DinnerClub2, Discover, JCBACCOUNT(24.6.7일 기준)
우리, 신한, 국민, 기업, 하나, 부산, 카카오, 농협, sc제일, 한국씨티, 케이, 새마을, 우체국, 대구, 광주, 전북JUMIN_NUMBER
주민번호PASSPORT_NUMBER
여권번호PHONE_NUMBER
한국, 미국, 영국, 일본, 독일, 베트남, 인도네시아, 중국