diff --git a/modules/reitit-ring/src/reitit/ring.cljc b/modules/reitit-ring/src/reitit/ring.cljc index 28352cc9..51560688 100644 --- a/modules/reitit-ring/src/reitit/ring.cljc +++ b/modules/reitit-ring/src/reitit/ring.cljc @@ -60,17 +60,29 @@ (defn compile-result [[path data] opts] (let [[top childs] (group-keys data)] (if-not (seq childs) - (let [middleware (middleware/compile-result [path top] opts)] - (map->Methods {:any (middleware/compile-result [path top] opts)})) - (let [any-handler (if (:handler top) (middleware/compile-result [path data] opts))] - (reduce-kv - (fn [acc method data] - (let [data (meta-merge top data)] - (assoc acc method (middleware/compile-result [path data] opts method)))) - (map->Methods {:any any-handler}) - childs))))) + (map->Methods {:any (middleware/compile-result [path top] opts)}) + (reduce-kv + (fn [acc method data] + (let [data (meta-merge top data)] + (assoc acc method (middleware/compile-result [path data] opts method)))) + (map->Methods {:any (if (:handler top) (middleware/compile-result [path data] opts))}) + childs)))) (defn router + "Creates a [[reitit.core/Router]] from raw route data and optionally an options map with + support for http-methods and Middleware. See [docs](https://metosin.github.io/reitit/) + for details. + + Example: + + (router + [\"/api\" {:middleware [wrap-format wrap-oauth2]} + [\"/users\" {:get get-user + :post update-user + :delete {:middleware [wrap-delete] + :handler delete-user}}]]) + + See router options from [[reitit.core/router]] and [[reitit.ring.middleware/router]]." ([data] (router data nil)) ([data opts] diff --git a/modules/reitit-ring/src/reitit/ring/middleware.cljc b/modules/reitit-ring/src/reitit/ring/middleware.cljc index ffd00217..8846efcc 100644 --- a/modules/reitit-ring/src/reitit/ring/middleware.cljc +++ b/modules/reitit-ring/src/reitit/ring/middleware.cljc @@ -87,6 +87,17 @@ :data data})))) (defn router + "Creates a [[reitit.core/Router]] from raw route data and optionally an options map with + support for Middleware. See [docs](https://metosin.github.io/reitit/) for details. + + Example: + + (router + [\"/api\" {:middleware [wrap-format wrap-oauth2]} + [\"/users\" {:middleware [wrap-delete] + :handler get-user}]]) + + See router options from [[reitit.core/router]]." ([data] (router data nil)) ([data opts] @@ -106,6 +117,6 @@ "Creates a vanilla ring middleware chain out of sequence of IntoMiddleware thingies." ([middleware handler data] - (chain middleware handler data nil)) + (chain middleware handler data nil)) ([middleware handler data opts] (compile-handler (expand middleware data opts) handler)))