Polish README

This commit is contained in:
Tommi Reiman 2017-08-15 09:14:02 +03:00
parent e38d500b03
commit 555c3b4c41

View file

@ -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