Spring-Bean Validation-httpメッセージ変換器
2560 ワード
1. Bean Validation - Http Message Converter
@Valid@Validatedは@RequestBodyにも適用できます.
すなわち、API JSONリクエストの処理においても利用可能である.
APIは3つの側面を考慮する必要がある
要求成功:成功
失敗リクエスト:JSONをオブジェクトとして作成すること自体が失敗(Binding失敗)
検証エラー要求:JSONのオブジェクト作成に成功しました.検証に失敗しました
検証に失敗した場合BindingResult。JSONでgetAllErrors()の値を表示する
[
{
"codes": [
"NotBlank.itemSaveForm.itemName",
"NotBlank.itemName",
"NotBlank.java.lang.String",
"NotBlank"
],
"arguments": [
{
"codes": [
"itemSaveForm.itemName",
"itemName"
],
"arguments": null,
"defaultMessage": "itemName",
"code": "itemName"
}
],
"defaultMessage": "공백일 수 없습니다",
"objectName": "itemSaveForm",
"field": "itemName",
"rejectedValue": "",
"bindingFailure": false,
"code": "NotBlank"
},
{
"codes": [
"Range.itemSaveForm.price",
"Range.price",
"Range.java.lang.Integer",
"Range"
],
"arguments": [
{
"codes": [
"itemSaveForm.price",
"price"
],
"arguments": null,
"defaultMessage": "price",
"code": "price"
},
1000000,
1000
],
"defaultMessage": "1000에서 1000000 사이여야 합니다",
"objectName": "itemSaveForm",
"field": "price",
"rejectedValue": 1,
"bindingFailure": false,
"code": "Range"
}
]
BindingResult.getAllErrors()はObjectErrorとFieldErrorを返します.@ModelAttribute VS @RequestBody
@ModelAttributeは各フィールド単位で適用されるため、一部のフィールドでタイプが一致しないエラーが発生した場合、残りのフィールドは正常に処理されます.
したがって、特定のフィールドがバインドされていなくても、Validatorを使用して検証できます.
@RequestBodyはオブジェクト全体を単位としているため、フィールドにタイプが一致しないエラーが発生すると例外が発生します.
したがって、特定のフィールドがバインドされていない場合は、Validatorを使用して検証できません.
注:第2編Spring MVC:バックエンドWeb使用技術
Reference
この問題について(Spring-Bean Validation-httpメッセージ変換器), 我々は、より多くの情報をここで見つけました https://velog.io/@hyun6ik/Spring-Bean-Validation-Http-메시지-컨버터テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol