【发布时间】:2014-10-16 06:57:45
【问题描述】:
我正在开发一个小型 Ring / Compojure webapp,我想知道是否有办法整理路线。我正在使用标准的 Clojure 解构,但需要相当多的参数传递给函数。
这没关系,使用 Compojure Compojure 特定的解构:
(POST "/login/" [email password] (login-post email password)) ; handle login attempt
现在情况开始变得更糟。我需要为该函数提供存储在会话中的闪存消息和电子邮件:
(GET "/login/" {flash :flash {email :email} :session} (login-get flash email))
以下是通过表单提交数据的途径:
(POST "/" {{user-email :user-email} :session {title :title} :params {tags :tags} :params { content :content } :params { privacy :privacy } :params} (home-post user-email title tags content privacy))
我知道我可以使用 :params 将原始请求发送到然后 home-post 函数,但我不知何故觉得将参数提取与路由放在一起是一个更好的解决方案。它使 home-post 更纯净,更容易测试。只为每个函数提供一个巨大的请求映射。
路线定义中的解构可以更清晰(更易读),使用某种从地图中提取的函数,宏,什么的?
将解构与路线一起放置的优点和缺点?
【问题讨论】:
标签: clojure routes compojure ring