在Spring Boot中,我尝试创建一个@RestController
,该@RequestBody
应该接受@Valid
的不同结构,并使用String
批注验证bean。
我检查了几个选项,例如使请求正文为Map
,JSON
和javax.validation.Valid
结构,但是在这些选项中,我无法使用type
注释。
我的请求主体架构如下
模式1
{
"type": "type1",
"message": "String value"
}
模式2
{
"type": "type2",
"message": [
{
"key1": "value",
"key2": "value"
},
{
"key1": "value",
"key2": "value"
}
]
}
根据请求中的
message
键,message
键持有不同的结构值。在模式1中,String
键具有message
值,在模式2中,List of Object
键具有@Valid
作为值我正在寻找通过注释启用bean验证来处理上述情况的最佳方法
任何帮助将不胜感激。谢谢!
最佳答案
您可以在Bean级别上做到。
喜欢
@NotNull
@Size(min=2, max=30)
private String name;
请参阅以下链接
https://spring.io/guides/gs/validating-form-input/
https://www.baeldung.com/spring-boot-bean-validation
要从一个bean切换到另一个bean,可以在获取bean类型后使用切换用例或在服务层中添加@Valid而不是rest controller(API)层。
public methodName(@Valid ObjectName object){
.....
}
在Bean中,您可以声明
数据类型类型;
@有效
数据类型消息;
然后在名为bean的消息中执行相同的操作。
关于java - Spring Boot @RestController动态接受不同结构bean对象的@RequestBody并验证请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55644331/