A friendly data-driven router for Clojure(Script).
- Simple data-driven route syntax
- Route conflict resolution
- First-class route meta-data
- Bi-directional routing
- Ring-router with data-driven middleware
- Pluggable coercion (clojure.spec)
- Extendable
- Fast
See Issues for roadmap.
(require '[reitit.core :as r])
(def router
(r/router
[["/api/ping" ::ping]
["/api/orders/:id" ::order-by-id]]))
(r/match-by-path router "/api/ping")
; #Match{:template "/api/ping"
; :meta {:name ::ping}
; :result nil
; :params {}
; :path "/api/ping"}
(r/match-by-name router ::order-by-id {:id 2})
; #Match{:template "/api/orders/:id",
; :meta {:name ::order-by-id},
; :result nil,
; :params {:id 2},
; :path "/api/orders/2"}
Check out the full documentation!
To all Clojure(Script) routing libs out there, expecially to Ataraxy, Bide, Bidi, Compojure and Pedestal.
Also to Compojure-api, Kekkonen and Ring-swagger and for the data-driven syntax, coercion & stuff.
And some Yada too.
The documentation is built with gitbook. To preview your changes locally:
npm install -g gitbook-cli
gitbook install
gitbook serve
To bump up version:
# new version
./scripts/set-version "1.0.0"
./scripts/lein-modules install
# works
lein test
# deploy to clojars
./scripts/lein-modules do clean, deploy clojars
Copyright © 2017 Metosin Oy
Distributed under the Eclipse Public License, the same as Clojure.