Clojure 路由已绑定时的compojure get请求
我习惯于冷静地定义我的路线,如下所示:Clojure 路由已绑定时的compojure get请求,clojure,compojure,luminus,Clojure,Compojure,Luminus,我习惯于冷静地定义我的路线,如下所示: (获取“/home”[req](主页请求)) 然后我可以在我的处理程序中使用整个请求对象 但现在我想使用绑定路由,比如: (GET”/details/:id“[id](详细信息页面id)) 在本例中,似乎无法同时获取请求和绑定参数。我试过: (GET”/details/:id“[id req](详细信息页面id req)) 但req为零 有没有办法通过绑定在路由上获取请求 我需要绑定,因此我不必执行以下操作: (获取“/details”[req](详细信息
(获取“/home”[req](主页请求))
然后我可以在我的处理程序中使用整个请求对象
但现在我想使用绑定路由,比如:
(GET”/details/:id“[id](详细信息页面id))
在本例中,似乎无法同时获取请求和绑定参数。我试过:
(GET”/details/:id“[id req](详细信息页面id req))
但req为零
有没有办法通过绑定在路由上获取请求
我需要绑定,因此我不必执行以下操作:
(获取“/details”[req](详细信息页面请求))
然后拥有…
我需要请求来访问会话和请求头
有什么建议吗
提前感谢。Compojure的绑定向量分解针对参数进行了优化,但不是很灵活,但幸运的是,对于更复杂的情况,您可以使用基于普通映射的请求分解:
(GET "/details/:id" {:keys [id] :params :as req} (details-page id req))
应该有用。嗯。。。这并不完美,但我会:
(获取“/details/:id”请求(详细信息页(->req:params:id)请求))
这段代码很有效,解决了我的问题,但我喜欢更简单的(干式)。根据,您应该能够通过向绑定向量添加:as req
将req
绑定到整个请求:
(获取“/details/:id”[id:as-req](详细信息页面id-req))
这不是有效的映射分解。你忘了戴牙套了吗?很有魅力!