我需要用springboot在我的rest控制器中按字段分解传入的json。
我的请求正文:
{
"text": "my text",
"myEnum": "VALUE1"
}
我的控制器:
@PatchMapping("/{id}")
Object updateEntity(@PathVariable Long id, String text, MyEnum myEnum) {
/* ... */
}
``` `@RequestParam` 不起作用,因为它只用于查询字符串参数, `@RequestBody` 不太管用,因为它能处理整个身体。但我需要通过场分解进入的身体并注入控制器。我知道我能用什么 `Map <String, String>` 为此,我想验证我的传入字段,我有不同类型的字段。我不想为每个控制器创建一个类。
1条答案
按热度按时间jexiocij1#
如果我没有误解您的需求,处理传入json的通常方法是定义一个反映预期输入的类,并将controller方法参数注解为requestbody。
默认情况下,springboot使用jackson对类进行反序列化,因此如果使用匹配的属性名,则不需要任何特殊的注解或设置。我认为枚举将在默认情况下处理,其他类型也是如此(尽管您可能需要为表示日期或时间戳的字符串提供一些指导)。任何错误的值都会导致反序列化失败,我认为您可以在controlleradvice中处理这个问题(尽管您需要再次检查)