在控制层

时间:2017-09-15 09:12:46

标签: java model-view-controller java-8 optional api-design

在MVC模式中,我们正在开发一个REST应用程序。

服务层返回Optional<T>,其中T可以是任何类。

因此,在REST Controller图层上有一个条件语句,用于测试结果是否为Optional.empty,然后返回[],否则返回实际数据。

return ABCService.getById("").map(send actual data).orElse(Collections.empty());

在控制层上编写此代码是一种不好的做法吗?

我们将返回Optional<T>,因为我们不想返回null。如果我们不在控制图层上使用该条件,我们也必须删除从服务层返回的Optional,我认为这不是一个好习惯。

有人可以解释为什么添加上面的代码不是一个好的做法,可能会有什么后果?

1 个答案:

答案 0 :(得分:1)

控制器负责以他们应该提供的格式表示数据。它们不处理原始数据(通常由服务处理的提取/更新等操作),它们只是说明这些数据应该是什么样的。

因此,相信.map(send actual data)没有做与业务逻辑层相关的任何事情,您的代码段是可以接受的。

剩下的另一个问题是如何正确编写处理该案例的方法。根据“清洁代码”,我建议编写两种方法(分别用于空数据和非空数据)。