A anotação @Valid pode realizar a verificação de dados. Você pode definir entidades e adicionar regras de verificação às propriedades da entidade. Quando a API recebe dados, sua entidade permitirá uma função de verificação. O código específico é o seguinte, que é o aplicativo mais básico:
entidade:
classe pública departamentoDTO {@apimodelProperty ("id") private string ID; @ApimodelProperty ("Superior ID") Private String Parentid; @ApimodelProperty ("número") @NotBlank (message = "Número do departamento não pode estar vazio.") Código da sequência privada; @ApimodelProperty ("número") @NotBlank (message = "Nome do departamento não pode estar vazio.") Nome da sequência privada; @ApimodelProperty ("funcionário> funcionários = novo ArrayList <> ();}Interface repouso:
@PostMapping () Resposta pública <SwenerAccount> InitialAccount (@apiparam ("número do cliente") @pathvariable string código, @apiparam ("período de registro") @pathvariable yearmonthmonthOntPeriod, @APIPARAM ("Solicy Body") @Valid @RequestBody Solic request.getOperator (), request.getBody ()); {} No código acima, adicionamos uma verificação para a solicitação de Request<DepartmentDto> . Durante o teste, se o seu departamentoNetdto.name estiver vazio, quando uma exceção de 400 aparecer, a mensagem de exceção de Lishi é "o nome do departamento não pode estar vazio", o que não é problema para nós e também atende aos nossos requisitos. Vamos ver outro cenário abaixo.
A entidade que precisa ser verificada é outro imóvel
Também precisamos ver que um objeto grande, como outros pequenos objetos encapsulados, é composto por, por exemplo, funcionários do departamento. Se você precisar verificar a eficácia dos funcionários, como você deve alcançá -lo? Se não modificarmos o código -fonte e o resultado da execução é negativo, ele não verificará o objeto do funcionário, mas direcionará apenas as propriedades do objeto de primeira camada.
Podemos verificar este atributo adicionando @valid a @valid
classe pública departamentoDTO {@apimodelProperty ("id") private string ID; @ApimodelProperty ("Superior ID") Private String Parentid; @ApimodelProperty ("número") @NotBlank (message = "Número do departamento não pode estar vazio.") Código da sequência privada; @ApimodelProperty ("número") @NotBlank (message = "Nome do departamento não pode estar vazio.") Nome da sequência privada; @Valid @apimodelProperty ("funcionário> funcionários = novo ArrayList <> ();}Vamos dar uma olhada nos resultados da verificação abaixo. Nossos 400 erros podem ser emitidos normalmente no teste de unidade!
@Test public void InitialAccount_employee_name_empty () {list <cleame> funcionários = new ArrayList <> (); funcionários.add (funcionário.builder () .name ("") .Email ("[email protected]") .idnumber ("110111198203182012") .build ()); List <ParpiceDto> departamentos = new ArrayList <> (); departamentos.Add (departamentoDto.builder () .Name ("departamento") .Description ("Departamento Técnico") .SalaryType (SalaryType.ResearchAndDevelopmentCosts). Empregados (funcionários) .Build ()); ClientAccountDTO ClientAccountDTO = ClientAccountDto.Builder () .Name ("Customer") .Departments (departamentos) .build (); Solicitação <SFOTERACCOUNTDTO> request = BuildRequest (ClientAccountDto); api.post () .uri ("/v1/12345/2018-03") .body (BodyInserters.FromObject (request)) .Exchange () .ExpectStatus (). }Os resultados são os seguintes, o teste passa
Se for testado, é ISOK, já que o nome de usuário está vazio, uma mensagem de erro aparecerá
api.post () .uri ("/v1/12345/2018-03") .body (BodyInserters.FromObject (request)) .Exchange () .ExpectStatus (). Isok ();Você pode verificar as informações de promotamento dos resultados
Resumir
O exposto acima é a verificação do tipo aninhado pela anotação @valid introduzida a você. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!