【发布时间】:2020-04-17 04:36:35
【问题描述】:
我将请求对象名称 Person 传递给控制器。假设该对象有 2 个两个字段。以下业务规则适用:
- 如果字段
age的值sin 应留空; - 如果不是,则会产生异常消息
the sin should be blank with age < 18,或者另一种方法是将字段sin设置为空字符串("")。
当这些输入相互依赖时,我验证这些输入的最佳方式是什么。我处理它们的方法是在控制器方法中验证它们。所以它应该看起来像这样
@GetMapping("/..."
public ResponseEntity<PersonResponse> getPersonResult(GetPersonRequest request)
{
if (request.getAge() < 18)
{
if (request.getSin.length > 0)
request.setSin("")
}
PersonResponse response = callThirdPartyAPIToRetrieveInformationAboutThatPerson(request)
return response ;
}
还有更优雅的编码方式吗?控制器方法可以包含任何类似的验证逻辑吗?我是否违反了 SOLID 设计中的单一责任?
【问题讨论】:
-
你一次问了太多问题..
标签: spring validation spring-mvc design-patterns spring-annotations