我有下面的service
,它的返回类型是bytes
或Amazon ServiceException
。控制器
中的响应实体是基于service
的这些返回类型形成的。
如何:
1。设计服务
以返回不同类型的
2。使控制器
根据其接收形成响应实体
@Service
Myservice
{
public x example(String a) {
try {
...
return bytes;
}catch(AmazonServiceException | IOException awsEx) {
return awsEx;
}
}
}
这是控制器
@RequestMapping(method = GET, value = "/getData")
public ResponseEntity<?> getData(@RequestParam("a") String a) throws IOException {
return this.Myservice.example(a)condition ? returnA : returnB;
}
一般来说,返回多个可能的类型不是推荐的事情。它被认为是一种不好的气味(如Object
返回类型)。方法应该具体说明它保证的返回类型。
在这种情况下,您可能希望返回String
,其中包含原始字节或提到的Exception消息。
但最佳实践是什么?答案是:@ExceptionHandler
和json响应。
我前段时间发布了类似的答案,建议您阅读:如何修改默认的Json错误响应Spring?
此外,使控制器/服务返回Exception
是一种非常糟糕的味道。我假设您正在编写某种REST API,在这种情况下,您的数据交换协议应该是JSON。因此,如果您的AWS服务发生了任何不好的事情,请抛出异常并返回适当的消息。
我是java新手,我正在学习抽象课程,但我被困在了一个地方。 我想将不同的数据类型返回到,但我做不到。我确实在java中参考了抽象方法的不同返回类型,但没有提出这个问题,因为我在java方面的经验较少,因此我不明白该链接的solution.Please有人帮我解决这个问题。 密码 错误 测试.java:18: 错误: 联合不是抽象的, 不会覆盖抽象方法率对银行的兴趣() 类Union扩展Bank{
问题内容: 如果我在MySql中将一列设置为布尔值,则查询返回的值将为或。 是否可以做这样的事情 我的意思是,根据是对还是错,返回两个不同的字符串。 问题答案:
现在我希望以泛型的方式使用这些类。 如何从方法“method1”和“method2”返回泛型类型(可以是猫或狗)。我有几个返回“T extends Animal”的方法,所以最好在方法级别或类级别中声明泛型类型。
问题内容: 我试图遵守MVC惯例,并将所有网络代码保留在我的应用程序中使用的数据服务类中。在一个屏幕上,我有需要显示的用户名和用户名。更新此函数时,我正在调用此函数: 但是尝试返回用户时出现错误!它说: void函数中非预期的非无效返回值。 但是该功能显然不是无效的。那我该怎么办? 问题答案: 您正在将 函数 返回值与Firebase 闭包 返回值混淆-前者是但后者是;) 您实际上是从此关闭返回的
问题内容: 早上, 我需要从Web服务返回一条消息。以下是我的代码示例,我正在返回一个字符串。 我目前收到以下回应… 我理想上想返回类似 我敢肯定,一旦我有了主意,就可以在需要时退还其他物品。这只是我需要解决的基础。 非常感谢所有帮助,在此先感谢:) 更新:刚发现这个… 我需要类似的东西吗 问题答案: 用: 返回的结果将类似于:
问题内容: 。 将返回String和int值。因此,我从这些返回值中得出了以下解决方案。 建立课程通话 并进行如下更改。 现在我的问题是,有没有更简单的方法来实现这一目标? 问题答案: 最后,我认为我的方法会更好,因为当返回类型的数量增加时,这种实现会以最佳方式实现。