我来自clojure / pedestal而且我喜欢的东西可以在上下文对象中扩展属性,上下文有点类似于中间件和过滤器
intercep 1 int 2
--> context -----------> context --------> context ---> controller
request request request
user: "tom" user:"tom"
admin : true
初始上下文包括请求和 在每个拦截器中,我向上下文添加新数据,例如检查会话并根据其cookie(int 1)获取用户详细信息,或者获取他是否为admin(inter 2)...当数据进入控制器时包括有用的信息
我知道静态限制,但我想也许可以使用无形...例如,在我的finatra控制器中,我想要像... ...
type SuperRequest = ......
maybe would need some implicit heres
get("/hi") { request: SuperRequest =>
info("hi")
"Hello!! " + request.myHlist.get("name")
}
我认为好处是好处,因为对象不能很好地构成
.filter(filter1) //without HList I'd need create a new SuperRequest here with the user name
.filter(filter2) //and here other new object with the admin details
可能是一个好方法吗?你知道一个更好的替代方案,以可组合的方式扩展对象......