可以在请求对象finagle Service

时间:2015-06-24 01:47:33

标签: scala shapeless

我来自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

可能是一个好方法吗?你知道一个更好的替代方案,以可组合的方式扩展对象......

0 个答案:

没有答案