@validアノテーションは、データ検証を実現できます。エンティティを定義し、エンティティのプロパティに検証ルールを追加できます。 APIがデータを受信すると、エンティティは検証関数を有効にします。特定のコードは次のとおりです。これは最も基本的なアプリケーションです。
実在物:
public class departmentdto {@apimodelproperty( "id")private string id; @apimodelproperty( "superior id")private string parentid; @apimodelproperty( "number")@notblank(message = "部門番号は空になりません。")プライベート文字列コード。 @apimodelproperty( "number")@notblank(message = "部門名は空ではない。")プライベート文字列名; @apimodelproperty( "Employees> Employees = new ArrayList <>();}RESTFULインターフェース:
@postmapping()public response <clientAccount> initialAccount(@Apiparam( "Customer number") @pathvariable String code、@Apiparam( "登録期間") @pathvariaiable yearmonth councountperiod、@apiparam( "request body")@valid @requestbody request <departmentto> {clientount concuntcuntsive(codecountcountsimal accountPeriod、request.getoperator()、request.getBody()); {}上記のコードでは、リクエストボディRequest<DepartmentDto>のチェックを追加しました。テスト中、DepartmentNetdto.Nameが空の場合、400の例外が表示される場合、Lishi例外メッセージは「部門名は空になりません」です。以下の別のシナリオを見てみましょう。
検証する必要があるエンティティは別の不動産です
また、カプセル化された他の小さなオブジェクトなどの大きなオブジェクトが、たとえば、部門の下の従業員で構成されていることを確認する必要があります。従業員の有効性を確認する必要がある場合、どのように達成する必要がありますか?ソースコードを変更せず、実行結果がネガティブである場合、従業員オブジェクトは検証するのではなく、最初のレイヤーオブジェクトのプロパティのみをターゲットにします。
@validに@validに追加することにより、この属性を確認できます
public class departmentdto {@apimodelproperty( "id")private string id; @apimodelproperty( "superior id")private string parentid; @apimodelproperty( "number")@notblank(message = "部門番号は空になりません。")プライベート文字列コード。 @apimodelproperty( "number")@notblank(message = "部門名は空ではない。")プライベート文字列名; @Valid @ApimodelProperty( "Employee> Employees = new ArrayList <>();}以下の確認結果を見てみましょう。 400のエラーは、単体テストで通常出力できます!
@test public void initialacount_employee_name_empty(){list <employeper> employees = new ArrayList <>(); employes.add(employee.builder().name( "").email( "[email protected]").idnumber( "110111198203182012").build());リスト<DeciptionDto> 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().exepalto(400).expectbody().jsonpath( "$。エラー[0] .message")。 }結果は次のとおり、テストは合格します
テストされている場合、ユーザー名が空であるため、エラーメッセージが表示されます。
api.post().uri( "/v1/12345/2018-03").body(bodyinserters.fromobject(request)).exchange().expectstatus()。isok();
結果のプロンプト情報を確認できます
要約します
上記は、Springboot @Valid Annotationによるネストされたタイプの検証です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!