列出compojure中的所有路由

时间:2015-09-17 15:01:52

标签: clojure compojure

如何在处理程序函数中列出所有路由?我正在寻找类似于rails'rake routes的行为。例如:

(defroutes foo-routes
    (GET "/foo/:foo-id"
        [foo-id]
            "bar response")
    (GET "/bar/:bar-id"
        [bar-id]
            "foo response"))

那么可以从包含以下内容的foo-bar路线中提取地图吗?

{:GET "/foo/:foo-id"
 :GET "/bar/:bar-id"}

1 个答案:

答案 0 :(得分:2)

我认为不可能。 defroutes是一个返回环处理程序的宏。 GET是一个返回路由的宏。 Route也只是一个函数,只有在方法和路径匹配时才调用相关的处理程序。所以最后你的foo-routes只是一个clojure函数,它由你的路由定义的其他函数组成,并且它不维护这样的map。如果您需要获得这样的地图,也许您可​​以自己在代码中维护它并从该地图生成路线。