确定表示层或业务层中的应用程序状态

时间:2018-04-17 20:30:02

标签: java rest ejb hateoas

我正在寻找一些关于应用程序的表示层或业务层是否应该负责确定应用程序状态以及在与资源交互时应该在响应中显示哪些操作的指导。

我正在开发的项目是基于Java EE的应用程序,其中JAX-RS用于基于REST的表示层,用于业务层的无状态EJB,以及用于持久层的JPA,尽管我将添加其他类型的表示层在未来,例如基于JSF的Web应用程序和富客户端。

作为一个非常简单的例子,资源是一个银行账户,如果余额是100英镑,那么行动可以是“存款”,“取款”,“转账”或“关闭”,但如果余额是 - £25那么唯一可用的行动就是“存款”。从REST接口的角度来看,如果GET请求获取帐户资源,则响应将包括每个可用操作的HATEOAS链接,具体取决于余额。

我的第一个问题使用此示例是表示层是否应检查业务层返回的余额,然后决定响应中应包含哪些HATEOAS链接,或者业务层是否应返回表示层的给定资源的可用操作列表,然后将转换为HATEOAS链接。

由于这本质上是业务逻辑,业务层似乎是最合适的地方,但是这会引发第二个问题,关于应该如何将可用操作列表提供给表示层

我的第三个问题是否有更好的方法来实现相同的结果。谷歌搜索没有透露任何人试图解决同样的问题,我感到有些惊讶。我已经研究过使用富域对象而不是贫穷的域对象,但这似乎违背了Java EE / EJB / JPA的做事方式。

无论是在表示层还是业务层中执行此操作,业务层仍将在相应操作(“存款”,“撤销”,“转移”,“关闭”)时检查操作是否有效调用。

我的项目中的实际业务逻辑更复杂,但想为此问题提供一个简单的示例。

0 个答案:

没有答案