mirror of
https://github.com/metosin/reitit.git
synced 2025-12-18 00:41:12 +00:00
Polish README
This commit is contained in:
parent
e38d500b03
commit
555c3b4c41
1 changed files with 23 additions and 16 deletions
39
README.md
39
README.md
|
|
@ -79,7 +79,7 @@ Creating a router:
|
||||||
["/user/:id" ::user]]))
|
["/user/:id" ::user]]))
|
||||||
```
|
```
|
||||||
|
|
||||||
It's `LinearRouter` (as there are wildcard):
|
`LinearRouter` is created (as there are wildcard):
|
||||||
|
|
||||||
```clj
|
```clj
|
||||||
(class router)
|
(class router)
|
||||||
|
|
@ -131,46 +131,46 @@ A router based on nested route tree:
|
||||||
```clj
|
```clj
|
||||||
(def router
|
(def router
|
||||||
(reitit/router
|
(reitit/router
|
||||||
["/api" {:middleware [:api-mw]}
|
["/api" {:interceptors [::api]}
|
||||||
["/ping" ::ping]
|
["/ping" ::ping]
|
||||||
["/public/*path" ::resources]
|
["/public/*path" ::resources]
|
||||||
["/user/:id" {:name ::get-user
|
["/user/:id" {:name ::get-user
|
||||||
:parameters {:id String}}
|
:parameters {:id String}}
|
||||||
["/orders" ::user-orders]]
|
["/orders" ::user-orders]]
|
||||||
["/admin" {:middleware [:admin-mw]
|
["/admin" {:interceptors [::admin]
|
||||||
:roles #{:admin}}
|
:roles #{:admin}}
|
||||||
["/root" {:name ::root
|
["/root" {:name ::root
|
||||||
:roles ^:replace #{:root}}]
|
:roles ^:replace #{:root}}]
|
||||||
["/db" {:name ::db
|
["/db" {:name ::db
|
||||||
:middleware [:db-mw]}]]]))
|
:interceptors [::db]}]]]))
|
||||||
```
|
```
|
||||||
|
|
||||||
Resolved route tree:
|
Resolved route tree:
|
||||||
|
|
||||||
```clj
|
```clj
|
||||||
(reitit/routes ring-router)
|
(reitit/routes router)
|
||||||
; [["/api/ping" {:name :user/ping
|
; [["/api/ping" {:name :user/ping
|
||||||
; :middleware [:api-mw]}]
|
; :interceptors [::api]}]
|
||||||
; ["/api/public/*path" {:name :user/resources
|
; ["/api/public/*path" {:name :user/resources
|
||||||
; :middleware [:api-mw]}]
|
; :interceptors [::api]}]
|
||||||
; ["/api/user/:id/orders" {:name :user/user-orders
|
; ["/api/user/:id/orders" {:name :user/user-orders
|
||||||
; :middleware [:api-mw]
|
; :interceptors [::api]
|
||||||
; :parameters {:id String}}]
|
; :parameters {:id String}}]
|
||||||
; ["/api/admin/root" {:name :user/root
|
; ["/api/admin/root" {:name :user/root
|
||||||
; :middleware [:api-mw :admin-mw]
|
; :interceptors [::api ::admin]
|
||||||
; :roles #{:root}}]
|
; :roles #{:root}}]
|
||||||
; ["/api/admin/db" {:name :user/db
|
; ["/api/admin/db" {:name :user/db
|
||||||
; :middleware [:api-mw :admin-mw :db-mw]
|
; :interceptors [::api ::admin ::db]
|
||||||
; :roles #{:admin}}]]
|
; :roles #{:admin}}]]
|
||||||
```
|
```
|
||||||
|
|
||||||
Path-based routing:
|
Path-based routing:
|
||||||
|
|
||||||
```clj
|
```clj
|
||||||
(reitit/match-by-path ring-router "/api/admin/root")
|
(reitit/match-by-path router "/api/admin/root")
|
||||||
; #Match{:template "/api/admin/root"
|
; #Match{:template "/api/admin/root"
|
||||||
; :meta {:name :user/root
|
; :meta {:name :user/root
|
||||||
; :middleware [:api-mw :admin-mw]
|
; :interceptors [::api ::admin]
|
||||||
; :roles #{:root}}
|
; :roles #{:root}}
|
||||||
; :path "/api/admin/root"
|
; :path "/api/admin/root"
|
||||||
; :handler nil
|
; :handler nil
|
||||||
|
|
@ -183,7 +183,7 @@ Routers also support meta-data compilation enabling things like fast [Ring](http
|
||||||
|
|
||||||
## Ring
|
## Ring
|
||||||
|
|
||||||
Simplest possible [Ring](https://github.com/ring-clojure/ring)-based routing app:
|
Simple [Ring](https://github.com/ring-clojure/ring)-based routing app:
|
||||||
|
|
||||||
```clj
|
```clj
|
||||||
(require '[reitit.ring :as ring])
|
(require '[reitit.ring :as ring])
|
||||||
|
|
@ -197,6 +197,13 @@ Simplest possible [Ring](https://github.com/ring-clojure/ring)-based routing app
|
||||||
["/ping" handler])))
|
["/ping" handler])))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
It's backed by a `LookupRouter` (no wildcards!)
|
||||||
|
|
||||||
|
```clj
|
||||||
|
(-> app (ring/get-router) class)
|
||||||
|
; reitit.core.LookupRouter
|
||||||
|
```
|
||||||
|
|
||||||
The expanded routes:
|
The expanded routes:
|
||||||
|
|
||||||
```clj
|
```clj
|
||||||
|
|
@ -230,7 +237,7 @@ Routing based on `:request-method`:
|
||||||
; nil
|
; nil
|
||||||
```
|
```
|
||||||
|
|
||||||
Some middleware and a handler:
|
Define some middleware and a new handler:
|
||||||
|
|
||||||
```clj
|
```clj
|
||||||
(defn wrap [handler id]
|
(defn wrap [handler id]
|
||||||
|
|
@ -258,7 +265,7 @@ App with nested middleware:
|
||||||
:handler handler}}]]])))
|
:handler handler}}]]])))
|
||||||
```
|
```
|
||||||
|
|
||||||
Middleware is called correctly:
|
Middleware is applied correctly:
|
||||||
|
|
||||||
```clj
|
```clj
|
||||||
(app {:request-method :delete, :uri "/api/ping"})
|
(app {:request-method :delete, :uri "/api/ping"})
|
||||||
|
|
@ -272,7 +279,7 @@ Nested middleware works too:
|
||||||
; {:status 200, :body [:api :admin :db :delete :handler]}
|
; {:status 200, :body [:api :admin :db :delete :handler]}
|
||||||
```
|
```
|
||||||
|
|
||||||
Ring-router supports also [Async Ring](https://www.booleanknot.com/blog/2016/07/15/asynchronous-ring.html), so it can be used on [Node.js](https://nodejs.org/en/) too.
|
Ring-router supports also 3-arity [Async Ring](https://www.booleanknot.com/blog/2016/07/15/asynchronous-ring.html), so it can be used on [Node.js](https://nodejs.org/en/) too.
|
||||||
|
|
||||||
## Validating route-tree
|
## Validating route-tree
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue