gpt4 book ai didi

java - Spring Boot @RestController动态接受不同结构bean对象的@RequestBody并验证请求

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:56 25 4
gpt4 key购买 nike

在 Spring Boot 中,我尝试创建一个 @RestController ,它应该接受不同的 @RequestBody 结构,并使用 @Valid 注释验证 bean。

我检查了几个选项,例如制作请求正文 StringMapJSON 结构,但在这些选项中我无法使用 javax.validation.Valid 注释。

下面给出了我的请求正文架构

架构 1

{
"type": "type1",
"message": "String value"
}

架构 2

{
"type": "type2",
"message": [
{
"key1": "value",
"key2": "value"
},
{
"key1": "value",
"key2": "value"
}
]
}

基于请求message键中的type键保存不同的结构值。在 Schema 1 message 键中具有 String 值,在 Schema 2 message 键中具有 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 类型后使用 switch case 或在服务层而不是其余 Controller (API)层添加 @Valid。

public methodName(@Valid ObjectName object){
.....
}

在Bean中,可以声明

数据类型;

@有效数据类型消息;

然后你在名为 bean 的消息中执行相同的操作。

关于java - Spring Boot @RestController动态接受不同结构bean对象的@RequestBody并验证请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55644331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com