java - Spring Boot @RestController 动态接受不同结构 bean 对象的 @RequestBody 并验证请求
问题描述
在 Spring Boot 中,我试图创建一个@RestController
应该接受不同结构并使用注释@RequestBody
验证 bean 。@Valid
我检查了几个选项,例如制作请求正文和结构String
,但在这些选项中我无法使用注释。Map
JSON
javax.validation.Valid
我的请求正文架构如下所示
模式 1
{
"type": "type1",
"message": "String value"
}
模式 2
{
"type": "type2",
"message": [
{
"key1": "value",
"key2": "value"
},
{
"key1": "value",
"key2": "value"
}
]
}
基于type
请求message
键中的键持有不同的结构值。在模式 1 message
中键具有String
值,在模式 2 message
中键具有List of Object
值
我正在寻找使用@Valid
注释启用 bean 验证来处理上述场景的最佳方法
任何帮助将不胜感激。谢谢!
解决方案
使用默认的 spring 提供的实现是不可能的。您应该自己创建一个接受这两种类型(字符串、对象列表)对象的自定义类,然后您应该编写自己的注释来验证这一点。
推荐阅读
- ng-bootstrap - 如何将标题添加到 ngbtypeahead 窗口?
- android - 对 Kotlin Coroutines 执行感到困惑:在哪里调用 await()?
- kubernetes-ingress - 安装 Ingress 控制器的过程
- ios - 如何创建正则表达式来找出字符串中的重复字符?
- javascript - 未捕获的类型错误:提交表单时无法读取 Javascript 中未定义的属性“init”
- uwp - 如何在 UWP C# 中的多显示器设置中获取显示器的屏幕尺寸
- clojure - 用clojure语法重写java if语句
- reactjs - 如何在没有任何连接和调用的情况下将道具推送到组件?另一个页面
- r - 在 R 中进行非标准评估时部分评估表达式
- dependency-injection - 基于上下文或调用者的域实体方法的有效性