L'annotation @valid peut réaliser la vérification des données. Vous pouvez définir des entités et ajouter des règles de vérification aux propriétés de l'entité. Lorsque l'API reçoit des données, votre entité permettra une fonction de vérification. Le code spécifique est le suivant, qui est l'application la plus élémentaire:
entité:
classe publique DepartmentDto {@apimodelProperty ("id") ID de chaîne privée; @Apimodelproperty ("ID supérieur") String privé Parentid; @Apimodelproperty ("numéro") @notblank (message = "numéro de département ne peut pas être vide.") Code de chaîne privé; @Apimodelproperty ("numéro") @notblank (message = "Le nom du département ne peut pas être vide.") Nom de la chaîne privée; @ApimodelProperty ("Employee> Employés = New ArrayList <> ();}Interface reposante:
@Postmapping () Public Response <SimitéAccount> InitialAccount (@APiParam ("numéro de client") @PathVariable Code de chaîne, @APiparam ("Période d'inscription") @Pathvariable YearMonth Accountperiod, @APiparam ("Demande Body") @valid @requestbody demande <DepartmentDto>, ClientAccount result = ClientAccount request.getOperator (), request.getBody ()); {} Dans le code ci-dessus, nous avons ajouté un chèque pour la Request<DepartmentDto> . Pendant le test, si votre départementnetdto.Name est vide, lorsqu'une exception de 400 apparaît, le message d'exception de Lishi est "le nom du département ne peut pas être vide", ce qui n'est pas un problème pour nous et il répond également à nos exigences. Voyons un autre scénario ci-dessous.
L'entité qui doit être vérifiée est un autre bien immobilier
Nous devons également voir qu'un grand objet, comme d'autres petits objets encapsulés, est composé, par exemple, d'employés du ministère. Si vous devez vérifier l'efficacité des employés, comment devriez-vous y parvenir? Si nous ne modifions pas le code source et que le résultat d'exécution est négatif, il ne vérifiera pas l'objet employé, mais ne ciblera que les propriétés du premier objet de couche.
Nous pouvons vérifier cet attribut en ajoutant @valid à @valid
classe publique DepartmentDto {@apimodelProperty ("id") ID de chaîne privée; @Apimodelproperty ("ID supérieur") String privé Parentid; @Apimodelproperty ("numéro") @notblank (message = "numéro de département ne peut pas être vide.") Code de chaîne privé; @Apimodelproperty ("numéro") @notblank (message = "Le nom du département ne peut pas être vide.") Nom de la chaîne privée; @Valid @apimodelProperty ("Employee> Employee = New ArrayList <> ();}Jetons un coup d'œil aux résultats de vérification ci-dessous. Nos 400 erreurs peuvent être sorties normalement sous le test unitaire!
@Test public void initialAccount_Employee_Name_Empty () {list <employee> employés = new ArrayList <> (); employés.add (employee.builder () .name ("") .email ("[email protected]") .idNumber ("110111198203182012") .build ()); List <p undepvendto> départements = new ArrayList <> (); Department.Add (DepartmentDto.Builder () .Name ("Department") .Description ("Technical Department") .SalaryType (SalaryType.ResearchandDevelopmentCosts). Employes (employés) .build ()); ClientAccountDto ClientAccountDtO = clientCcountDto.Builder () .Name ("Client") .Departments (départements) .build (); Request <ClientAccountDto> request = buildRequest (clientAccountDto); api.post () .uri ("/ v1 / 12345 / 2018-03") .body (bodyInserters.fromObject (demande)) .Exchange () .ExpectStatus (). IsEqualto (400) .expectBody () .jsonPath ("$. Error }Les résultats sont les suivants, le test passe
S'il est testé, c'est ISOK, puisque le nom d'utilisateur est vide, un message d'erreur apparaîtra
api.post () .uri ("/ v1 / 12345 / 2018-03") .body (bodyInserters.FromObject (request)) .Exchange () .ExpectStatus (). Isok ();Vous pouvez vérifier les informations sur les résultats des résultats
Résumer
Ce qui précède est la vérification du type imbriqué par l'annotation Springboot @valid vous a présentée. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!