คำอธิบายประกอบ @Valid สามารถตระหนักถึงการตรวจสอบข้อมูล คุณสามารถกำหนดเอนทิตีและเพิ่มกฎการตรวจสอบลงในคุณสมบัติของเอนทิตี เมื่อ API ได้รับข้อมูลเอนทิตีของคุณจะเปิดใช้งานฟังก์ชั่นการตรวจสอบ รหัสเฉพาะมีดังนี้ซึ่งเป็นแอปพลิเคชันพื้นฐานที่สุด:
เอนทิตี:
Public Class DepartmentDTO {@apimodelProperty ("id") รหัสสตริงส่วนตัว; @ApimodelProperty ("ID ที่เหนือกว่า") Private String Parentid; @ApimodelProperty ("หมายเลข") @NotBlank (ข้อความ = "หมายเลขแผนกไม่สามารถว่างเปล่า") รหัสสตริงส่วนตัว; @ApimodelProperty ("number") @NotBlank (ข้อความ = "ชื่อแผนกไม่สามารถว่างเปล่า") ชื่อสตริงส่วนตัว; @ApimodelProperty ("พนักงาน> พนักงาน = new ArrayList <> ();}อินเทอร์เฟซพักผ่อน:
@PostMapping () การตอบสนองสาธารณะ <ClientAccount> initialAccount (@APIPARAM ("หมายเลขลูกค้า") รหัสสตริง @PathVariable, @APIPARAM ("ระยะเวลาการลงทะเบียน") @PathVariable YearMonth AccountPeriod, @apiparam request.getOperator (), request.getBody ()); {} ในรหัสข้างต้นเราเพิ่มการตรวจสอบคำขอร่างกาย Request<DepartmentDto> ในระหว่างการทดสอบหาก Departmentnetdto.name ของคุณว่างเปล่าเมื่อมีข้อยกเว้น 400 รายการข้อความข้อยกเว้นของ Lishi คือ "ชื่อแผนกไม่สามารถว่างเปล่า" ซึ่งไม่มีปัญหาสำหรับเราและมันก็ตรงตามข้อกำหนดของเรา มาดูสถานการณ์อื่นด้านล่าง
เอนทิตีที่ต้องได้รับการตรวจสอบเป็นอีกหนึ่งอสังหาริมทรัพย์
นอกจากนี้เรายังต้องเห็นว่าวัตถุขนาดใหญ่เช่นวัตถุขนาดเล็กอื่น ๆ ที่ถูกห่อหุ้มนั้นประกอบด้วยพนักงานภายใต้แผนก หากคุณต้องการตรวจสอบประสิทธิภาพของพนักงานคุณควรบรรลุเป้าหมายอย่างไร หากเราไม่ได้แก้ไขซอร์สโค้ดและผลการดำเนินการเป็นลบมันจะไม่ตรวจสอบวัตถุพนักงาน แต่จะกำหนดเป้าหมายคุณสมบัติของวัตถุเลเยอร์แรกเท่านั้น
เราสามารถตรวจสอบแอตทริบิวต์นี้ได้โดยการเพิ่ม @valid เป็น @valid
Public Class DepartmentDTO {@apimodelProperty ("id") รหัสสตริงส่วนตัว; @ApimodelProperty ("ID ที่เหนือกว่า") Private String Parentid; @ApimodelProperty ("หมายเลข") @NotBlank (ข้อความ = "หมายเลขแผนกไม่สามารถว่างเปล่า") รหัสสตริงส่วนตัว; @ApimodelProperty ("number") @NotBlank (ข้อความ = "ชื่อแผนกไม่สามารถว่างเปล่า") ชื่อสตริงส่วนตัว; @valid @apimodelproperty ("พนักงาน> พนักงาน = new ArrayList <> ();}มาดูผลการตรวจสอบด้านล่าง ข้อผิดพลาด 400 ข้อของเราสามารถส่งออกได้ตามปกติภายใต้การทดสอบหน่วย!
@Test โมฆะสาธารณะ public initialAccount_employee_name_empty () {list <preatee> พนักงาน = new ArrayList <> (); พนักงาน. ADD (พนักงาน. builder () .name ("") .Email ("[email protected]") .Idnumber ("110111198203182012") .build ()); รายการ <stementdto> แผนก = new ArrayList <> (); แผนก. ADD (DepartmentDto.Builder () .name ("แผนก") .Description ("แผนกเทคนิค") .SalaryType (SalaryType.ResearchandDevelopmentCosts) clientAccountDto clientAccountDto = clientAccountDto.builder () .name ("ลูกค้า"). ข้อมูล (แผนก) .build (); คำขอ <clientAccountDto> request = buildRequest (clientAccountDTO); api.post (). uri ("/v1/12345/2018-03") .body (bodyinserters.fromobject (คำขอ)) .exchange () .expectStatus (). isequalto (400) .expectbody (). -ผลลัพธ์มีดังนี้การทดสอบผ่าน
หากมีการทดสอบมันเป็น isok เนื่องจากชื่อผู้ใช้ว่างเปล่าข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น
api.post () .uri ("/v1/12345/2018-03") .body (bodyinserters.fromobject (คำขอ)) .exchange () .ExpectStatus (). isok ();คุณสามารถตรวจสอบข้อมูลพรอมต์ผลลัพธ์
สรุป
ข้างต้นคือการตรวจสอบประเภทที่ซ้อนกันโดยคำอธิบายประกอบสปริงบู๊ต @valid แนะนำให้คุณรู้จัก ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!