我的Scalatra网络服务有很多GET路由。他们中的每个人都需要几乎完全相同的代码来进行缓存和身份验证/授权,重复的代码是愚蠢的。
我希望借助隐式参数将该代码重构为例如一个函数cached
,自动检查给定的ETag是否仍然是正确的/ ressource,因此没有被修改。
将javax.servlet.http.HttpServletRequest
/ javax.servlet.http.HttpServletResponse
设置为隐式参数非常简单,但现在我想直接从该子函数中短接给定的E304案例。通常,您使用Scalatra的halt()
。据我所知,给定的Servlet通过继承来获取它们。因此,我需要将我的函数作为参数(Java开发人员喜欢this
)。
这是一个可靠的策略(来自良好重构的POV)吗?是否有更优雅的方式可以访问该单个成员halt()
?