@RequestBody、@RequestParam、@PathVariable、および @Vaild アノテーションの使用法と違い




@RequestBody

@RequestBody は主に、フロントエンドからバックエンドに渡される JSON 文字列のデータ (リクエスト本文のデータ) を受信するために使用されます。


Get メソッドにはリクエスト本文がないため、@RequestBody を使用してデータを受信する場合、フロントエンドは Get メソッドを使用してデータを送信できず、代わりに
Post メソッドを使用してデータを送信します。バックエンドの同じ受信メソッドでは、@RequestBody と @RequestParam() を同時に使用できます。@RequestBody には最大 1 つしか指定できませんが、@RequestParam() には複数指定できます。


  • 注: リクエストには RequestBody が 1 つだけありますが、リクエストには複数の RequestParams を含めることができます。

注:当同时使用 @RequestParam()和 @RequestBody时:

	@RequestParam()指定的参数可以是普通元素、 数组、集合、对象等等
	
	(即当:@RequestBody 与 @RequestParam() 可以同时使用时,原 SpringMVC 接收参数的机制不变,
	只不过 RequestBody 接收的是请求体里面的数据;
    而 RequestParam 接收的是 key-value 里面的参数,所以它会被切面进行处理从而可以用普通元素、
    数组、集合、对象等接收)
    
    即:如果参数时放在请求体中,传入后台的话,那么后台要用 @RequestBody 才能接收到;如果不是放
    在请求体中的话,那么后台接收前台传过来的参数时,要用 @RequestParam 来接收,或则形参前什么
    也不写也能接收。

注:如果参数前写了 @RequestParam(xxx),那么前端必须有对应的 xxx 名字才行
   (不管其是否有值,当然可以通过设置该注解的 required 属性来调节是否必须传)
   如果没有 xxx 名的话,那么请求会出错,报400。

注:如果参数前不写 @RequestParam(xxx) 的话,那么就前端可以有可以没有对应的 xxx 名字才行,
    如果有 xxx 名的话,那么就会自动匹配;没有的话,请求也能正确发送。



@RequestParam

@RequestParam は、リクエスト パラメーター領域のデータを制御層関数の処理メソッドのパラメーターにマッピングするために使用されます。


  • 主なパラメータの構文:

    @RequestParam(value="パラメータ名"、required="true/false"、defaultValue="")


1. value: リクエストで渡されるパラメーターの名前。バックグラウンド インターフェイスの value 値を設定しない場合、デフォルトで変数名が使用されます。以下の図の最初のパラメータが value="pageNum" に設定されていない場合、フロントエンドによって渡されるパラメータ名は pageNum である必要があります。そうしないと、pageNum はバックグラウンド インターフェイスで対応するデータを受け取りません。

2. 必須: このパラメータを含めるかどうか。デフォルトは true で、リクエスト パスにこのパラメータが含まれている必要があることを示します。含まれていない場合は 404 エラーが報告されます。false に設定すると、リクエストにそのようなパラメーターがない場合、デフォルトで null になり、基本データ型の変数の場合は値が必要で、null ポインター例外がスローされます。null 値が許可される場合、インターフェイス内の変数はラッパー クラスを使用して宣言する必要があります。

3.defaultValue: デフォルトのパラメータ値。この値が設定されている場合、required=true は無効になり、自動的に false になります。このパラメータが渡されない場合は、デフォルト値が使用されます。

グユ




@PathVariable

リクエスト パス内のプレースホルダーの値を受け取ります。
@PathVariable アノテーションは、URL 内のプレースホルダー パラメーターをコントローラー処理メソッドの入力パラメーターにバインドできます。URL 内の {xxx} プレースホルダーには @PathVariable("xxx" を渡すことができます) ) は、アクション メソッドの入力パラメーターにバインドされます。
以下に示すように:

グユ





@有効

@Valid アノテーションによりデータ検証を実現できます。最初にエンティティを定義し、エンティティの属性に検証ルールを追加し、
API がデータを受信するときに @valid キーワードを追加できます。このとき、定義されたエンティティは検証機能を有効にします。

@Valid アノテーションが検証に使用される場合、それが属するパッケージは javax.validation.Valid になります。


  • まず、次に示すように、エンティティ クラスの対応するフィールドに検証条件として機能するアノテーションを追加する必要があります。

グユ


  • 次に、以下に示すように、コントローラー層のメソッド検証のパラメーターに @Valid アノテーションを追加し、対応するフィールドに追加されたメッセージの内容を検証して取得するために Dto エンティティ クラス オブジェクトを渡す必要があります。

ここに画像の説明を挿入


  • 注: 例外タイプを誤用しないでください。たとえば、@size は int では使用できません。



-----------@差分比較----------




@RequestBody アノテーションと @RequestParam アノテーションの違い

Getリクエストでは@RequestBodyは使用できません。Postリクエストでは@RequestBodyと@RequestParamが利用できますが、@RequestBodyを利用する場合はパラメータ変換の設定を統一する必要があります。

@RequestParam アノテーションによって受け取られるパラメータは、requestHeader、つまりリクエスト ヘッダーから取得されます。どちらもリクエスト パス URL 内の動的パラメータを取得するために使用されます。つまり、URL の形式は xxx?username=123&password=456 です。
@RequestBody アノテーションによって受け取られるパラメータは、requestBody、つまりリクエストの本文から取得されます。



@RequestParam アノテーションと @PathVariable アノテーションの違い

@RequestParam アノテーションと @PathVariable アノテーションは、リクエストからリクエストを受け取るために使用されます。どちらもパラメータを受け取ることができます。主な違いは、@RequestParam はリクエストから値を取得するのに対し、@PathVariable は URL テンプレートから値を入力することです。

@RequestParam アノテーションは、静的 URL によって渡されるパラメーターを取得するために使用されます。
@PathVariable は、リクエスト パス内の変数をパラメーターとして取得するために使用され、@RequestMapping("item/{itemId}") と組み合わせて使用​​する必要があります。




----------- @認証情報フォーム -----------




検証情報説明書

限界 説明する
@ヌル 制限は null のみ可能です
@NotNull 制限を null にすることはできません
@AssertFalse 制限は false である必要があります
@AssertTrue 制限は true でなければなりません
@DecimalMax(値) 制限は指定された値以下の数値である必要があります
@DecimalMin(値) 制限は指定された値以上の数値である必要があります
@Digits(整数,小数) 制限は 10 進数である必要があり、整数部の桁数は整数を超えることはできず、小数部の桁数は小数部を超えることはできません。
@未来 制約は将来の日付である必要があります
@Max(値) 制限は指定された値以下の数値である必要があります
@Min(値) 制限は指定された値以上の数値である必要があります
@過去 制限は過去の日付である必要があります
@パターン(値) 制限は指定された正規表現と一致する必要があります
@サイズ(最大、最小) 制限文字数は最小値と最大値の間である必要があります
@過去 アノテーションの要素値(日付型)が現在時刻よりも前であることを確認する
@空ではない アノテーションの要素値が null でも空でもないことを確認します (文字列の長さが 0 ではなく、コレクションのサイズが 0 ではありません)。
@NotBlank 注釈の要素値が空ではないことを確認します (null ではなく、最初のスペースを削除した後の長さは 0)。@NotEmpty とは異なり、@NotBlank は文字列にのみ適用され、比較時に文字列のスペースは削除されます。
@Eメール 注釈の要素値が Email であることを確認します。また、正規表現とフラグを使用してカスタムの電子メール形式を指定することもできます。











注:
いいね、コメント、転載は大歓迎です 記事ページのわかりやすい場所に原文へのリンクをお願いします ご存知の
方、大勢の中、私の記事を読んでいただきありがとうございます
個性のない署名はどこにありますか!
詳細については、私に
注目して更新し続けてください

スキャンしてサプライズを楽しみましょう!
© 2020 10 - Guyu.com | 【著作権全著作権所有】

おすすめ

転載: blog.csdn.net/weixin_49770443/article/details/109311246#comments_27850914