【发布时间】:2014-10-23 19:26:47
【问题描述】:
我正在设置 Play!我们的 API 应用程序。该 API 封装了不同的服务。我想将这些服务注入到一个动作中,但只注入该特定端点所需的那些。比如:
object Application extends Controller {
def index = (UsersAction andThen OrdersAction) {
// boom UsersService and OrdersService is available here
for {
users <- usersService.list
orders <- ordersService.list
} yield "whatever"
}
}
我一直在玩这个想法并使用 ActionTransformers 我能够将传入的请求转换为具有给定服务的请求,但我不知道如何使该请求足够通用,以便我可以编写这些以任意顺序执行操作,而不为 WrapperRequests 的所有可能组合创建 ActionTransformers。
也许动作组合并不是实现这一目标的最佳方式。我全神贯注。
谢谢
更新:
为了澄清,上面的代码是伪代码,理想的场景,其中 usersService 和 ordersService 可用于该范围(隐含?我不知道)。如果那是不可能的,那么无论在该样本顶部添加较少量的噪声,都可以。谢谢
【问题讨论】:
-
你有显示
UsersAction和OrdersAction示例的代码(简化版) -
这只是伪代码。我一直在玩动作组合,试图按照这里的例子做一些事情:playframework.com/documentation/2.3.5/ScalaActionsComposition
-
我问的原因是我看不到您打算如何使
usersService和ordersService可用。您想在哪里指定它们以及如何使它们可用于您的操作主体? -
这是问题的一部分 ^^U 意思是,类似伪代码中的内容是理想的,然后我们必须根据需要添加更多代码以使其编译。对困惑感到抱歉。我会澄清的。
标签: scala dependency-injection playframework