![](/img/trans.png)
[英]Spring boot: different date format in json responses for "GET" and "POST/PUT" requests with same object type
[英]Spring boot REST controller: different custom validators for POST and PUT methods receiving the same object
我有一個帶有POST和PUT方法的Spring Boot Controller和一個自定義驗證器。
@Autowired
PersonValidator validator;
@InitBinder
protected void initBinder(final WebDataBinder binder) {
binder.addValidators(validator);
}
@PostMapping
public ResponseEntity<String> save(@Valid @RequestBody Person person) {}
@PutMapping
public ResponseEntity<String> update(@Valid @RequestBody Person person) {}
當前,POST和PUT方法都使用相同的驗證規則。 問題 :對於PUT和POST,我需要具有不同的驗證規則。 關於如何進行的任何想法,如何在同一RestController中使用不同的自定義驗證器?
如果您使用的是Spring Boot,則可以在應用程序中集成Hibernate Validator。 似乎您需要實現分組約束( https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#chapter-groups )
例如
實體
@NotEmpty(groups = PutValidation.class)
private String field1;
@Size(min = 3, groups = PutValidation.class)
@Size(min = 5, groups = PostValidation.class)
private String field2;
@Min(value = 18, groups = {PostValidation.class,PutValidation.class,Default.class})
private int age;
//Getters/setters
組(這些都是空接口)
public interface PostValidation {
}
public interface PutValidation {
}
如何在Controller中使用約束組
@PostMapping
public ResponseEntity<String> save(@Validated(PostValidation.class) @RequestBody Person person) {}
@PutMapping
public ResponseEntity<String> update(@Validated(PutValidation.class) @RequestBody Person person) {}
我希望這可以幫助您解決問題。
干杯!
您可以為每個驗證器創建自己的注釋,並在每個端點處替換@Valid。 看看@InRange: https ://lmonkiewicz.com/programming/get-noticed-2017/spring-boot-rest-request-validation/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.