@Valid 주석은 데이터 검증을 실현할 수 있습니다. 엔티티를 정의하고 엔티티의 속성에 검증 규칙을 추가 할 수 있습니다. API가 데이터를 수신하면 엔티티가 확인 기능을 활성화합니다. 특정 코드는 다음과 같습니다. 가장 기본적인 응용 프로그램입니다.
실재:
공개 클래스 DepartmentDTO {@apimodelProperty ( "ID") 개인 문자열 ID; @apimodelProperty ( "우수한 ID") private String parentid; @apimodelproperty ( "number") @notblank (message = "부서 번호는 비어있을 수 없습니다.") 개인 문자열 코드; @apimodelProperty ( "number") @notblank (message = "department name이 비어있을 수 없습니다.") 개인 문자열 이름; @apimodelProperty ( "Employee> 직원 = New ArrayList <> ();}편안한 인터페이스 :
@PostMapping () public responsk <clientAccount> InitialAccount (@apiparam ( "Customer Number") @AppLariable String Code, @Apiparam ( "등록 기간") @AppIbarible yearmonth AccountPeriod, @apiparam ( "요청") @valid @requestbody request <departmentdto> request) {clientAccount, request. ac 위 코드에서 요청 본문 Request<DepartmentDto> 에 대한 확인을 추가했습니다. 테스트 중에 DepartmentNETDTO.Name이 비어있는 경우 400을 제외하고 Lishi 예외 메시지는 "부서 이름이 비어있을 수 없다"는데, 이는 우리에게는 아무런 문제가 없으며 요구 사항을 충족합니다. 아래의 또 다른 시나리오를 봅시다.
검증 해야하는 개체는 또 다른 부동산입니다.
또한 캡슐화 된 다른 작은 물체와 같은 큰 물체가 예를 들어 부서의 직원으로 구성되어 있음을 확인해야합니다. 직원의 효과를 확인 해야하는 경우 어떻게 달성해야합니까? 소스 코드를 수정하지 않고 실행 결과가 음수 인 경우 직원 객체를 확인하지는 않지만 첫 번째 레이어 객체의 속성 만 타겟팅합니다.
@valid에 @valid를 추가 하여이 속성을 확인할 수 있습니다.
공개 클래스 DepartmentDTO {@apimodelProperty ( "ID") 개인 문자열 ID; @apimodelProperty ( "우수한 ID") private String parentid; @apimodelproperty ( "number") @notblank (message = "부서 번호는 비어있을 수 없습니다.") 개인 문자열 코드; @apimodelProperty ( "number") @notblank (message = "department name이 비어있을 수 없습니다.") 개인 문자열 이름; @Valid @apimodelProperty ( "Employee> 직원 = New ArrayList <> ();}아래의 확인 결과를 살펴 보겠습니다. 단위 테스트에서는 400 오류가 일반적으로 출력 될 수 있습니다!
@test public void initialaccount_employee_name_empty () {list <plineplyee> 직원 = new ArrayList <> (); Employees.add (Employee.Builder () .name ( "") .email ( "[email protected]") .idnumber ( "110111198203182012") .build ()); List <DepartmentDto> Departments = New ArrayList <> (); Departments.add (DepartmentDto.Builder () .name ( "Department") .Description ( "기술 부서") .SalaryType (SalaryType.ResearchandDevelopmentCosts) .employees (Employees) .build ()); clientAcCountDto ClientAcCountDto = clientAccountDto.Builder () .name ( "customer") .departments (Departments) .build (); request <clientAccountDto> request = buildRequest (clientAccountDto); api.post () .uri ( "/v1/12345/2018-03") .body (bodyinserters.fromobject (request)) .exchange () .expectstatus (). isequalto (400) .expect body () .jsonpath ( "$. 오류 [0] .message"). }결과는 다음과 같습니다. 테스트가 통과됩니다
테스트 된 경우 ISOK입니다. 사용자 이름이 비어 있으므로 오류 메시지가 나타납니다.
api.post () .uri ( "/v1/12345/2018-03") .body (bodyinserters.fromobject (request)) .exchange () .expectstatus (). isok ();
결과 프롬프트 정보를 확인할 수 있습니다
요약
위는 소개 된 SpringBoot @Valid 주석에 의한 중첩 유형의 확인입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!