【发布时间】:2017-01-03 10:34:20
【问题描述】:
我想知道根据服务结果在控制器中构建消息到前端的最佳方法是什么。我正在考虑使用 rest 控制器在 java/spring 上下文中,但它也反映了 MVC 模型。显然,我在互联网上看到的示例很容易理解实际应用中的最佳实践。 因此,对于这种情况,我们假设以下情况:
- 我们有一个带有单个方法 doMath(int a, int b) 的控制器 CalculateController
- 我们有一个服务 CalculatorService,它在 doMath(int a, int b) 方法中自行执行数学运算。
- 我们希望对输入参数执行额外的验证。该方法称为 validateInput(int a, int b)。
- 我们希望将计算结果或特定信息作为响应发送失败原因。
那么现在的问题:
-
作为控制器方法执行的结果,我将返回一个对象映射,该映射将被解析为 JSON。可能的实体是:
{ “结果”:“12” }
{ "errorCode":"参数不正确" }
这是正确的,还是我应该针对不同的错误处理? 我知道我可以另外使用 http 错误代码,例如 400 或 406 来指示输入参数不正确,但我个人不喜欢使用 http 错误代码来指示应用程序逻辑结果。 (我认为输入验证是应用逻辑)
- validateInput 方法应该放置在控制器中还是服务中?
- 在 validateInput 方法中我想检查两个简化条件
a) 是 a
b) 是 a*a == b,然后通过消息“a 平方不能等于 b”通知用户。
我应该如何根据结果提供附加消息? 我可以想到两个解决方案:
- 返回Map,如果是肯定的验证结果有result = true,如果是否定的结果result = false,errorCode和相应的消息
-
返回指示验证结果的布尔值,并另外使用异常来表示否定结果。 (额外的问题,在这种情况下应该检查还是不检查异常?)
- 对于服务方法是否应该以同样的方式处理?
【问题讨论】:
标签: java spring spring-mvc controller