Bean Validation
Ein Beispiel für die REST-Kommunikation mit Spring Framework wird beschrieben.
Überprüfen Sie den Wert von RequestBody, der vom Client gesendet wurde. Es gibt verschiedene Arten von Scheckinhalten.
etc...
Ein Beispiel, das nur eine Validierung auf dem Controller durchführt.
SampleContorller.java
@RestController
@RequestMapping("validation")
public class SampleController {
//Einfach validieren
@PostMapping
public SampleResource validation(
@RequestBody @Validated SampleResource resource) {
return resource;
}
}
@Getter
@Setter
public class SampleResource {
@NotNull
@Size(min = 5, max = 30)
@Pattern(regexp = "[a-zA-Z0-9]*")
private String message;
}
Anmerkung | Erläuterung |
---|---|
@NotNull | Null verbieten |
@Size | {min}das ist alles{max}Stelle sicher das |
@Pattern | Bestätigen Sie, dass es sich um das angegebene Muster handelt |
Geben Sie im Feld "@ Valid" an.
SampleContorller.java
Mit Beispielregler oben
@Getter
@Setter
public class SampleResource {
@Valid
@NotNull
private SampleNestResource nestResource;
}
Sie validieren eine verschachtelte Klasse mit @Valid. Wenn "nestResource" nicht gesendet wird, wird Null an das Feld gebunden und die in "SampleNestResource" angegebene Validierung wird nicht ausgeführt, sodass sie von @NotNull benötigt wird.
@Getter
@Setter
public class SampleNestResource {
@NotNull
@Size(min = 5, max = 30)
@Pattern(regexp = "[a-zA-Z0-9]*")
private String message;
}
Wenn im Feld "Sammlung" wie "Liste" angegeben ist, unterscheiden sich die Validierungsspezifikation der Klasse ohne "Sammlung" und die Validierungsspezifikation für das Feld.
SampleContorller.java
Mit Beispielregler oben
@Getter
@Setter
public class SampleResource {
@Size(min = 2)
private List<@NotNull String> strList;
}
Überprüfen Sie mit @Size, ob das Listenelement des Felds 2 oder mehr ist
Stellen Sie sicher, dass String
in List
mit @NotNull nicht Null ist
Wenn keine Behandlung durchgeführt wird, tritt "MethodArgumentNotValidException" auf.
In RestController
gibt es keinen Fehler in BindingResult, also holen Sie sich den Fehlerinhalt mit Errors.
SampleContorller.java
@RestController
@RequestMapping("validation")
public class SampleController {
//Einfach validieren
@PostMapping
public SampleResource validation(
@RequestBody @Validated SampleResource resource,
Errors errors) {
if (errors.hasErrors()){
throw new RuntimeException();
}
return resource;
}
}