reitit/README.md

104 lines
3.3 KiB
Markdown
Raw Normal View History

2017-11-01 17:06:19 +00:00
# reitit [![Build Status](https://travis-ci.org/metosin/reitit.svg?branch=master)](https://travis-ci.org/metosin/reitit) [![Clojars Project](https://img.shields.io/clojars/v/metosin/reitit.svg)](https://clojars.org/metosin/reitit)
2017-08-07 11:08:39 +00:00
A friendly data-driven router for Clojure(Script).
2017-08-07 11:08:39 +00:00
* Simple data-driven [route syntax](https://metosin.github.io/reitit/basics/route_syntax.html)
* Route [conflict resolution](https://metosin.github.io/reitit/basics/route_conflicts.html)
* First-class [route meta-data](https://metosin.github.io/reitit/basics/route_data.html)
2017-10-29 07:29:06 +00:00
* Bi-directional routing
* [Ring-router](https://metosin.github.io/reitit/ring.html) with data-driven [middleware](https://metosin.github.io/reitit/ring/compiling_middleware.html)
* [Pluggable coercion](https://metosin.github.io/reitit/ring/parameter_coercion.html) ([clojure.spec](https://clojure.org/about/spec))
* Extendable
2017-11-01 08:17:57 +00:00
* [Fast](https://metosin.github.io/reitit/performance.html)
2017-11-12 19:44:40 +00:00
See the [full documentation](https://metosin.github.io/reitit/) for details.
2017-08-17 06:24:23 +00:00
2017-08-07 11:08:39 +00:00
## Latest version
2017-11-01 07:29:16 +00:00
All bundled:
2017-11-01 17:03:41 +00:00
```clj
[metosin/reitit "0.1.0-SNAPSHOT"]
```
2017-11-01 07:29:16 +00:00
2017-11-01 17:03:41 +00:00
Optionally, the parts can be required separately:
2017-11-01 07:29:16 +00:00
2017-11-01 17:03:41 +00:00
```clj
[metosin/reitit-core "0.1.0-SNAPSHOT"] ; just the router
[metosin/reitit-ring "0.1.0-SNAPSHOT"] ; ring-router
[metosin/reitit-spec "0.1.0-SNAPSHOT"] ; spec-coercion
```
2017-11-01 07:29:16 +00:00
## Quick start
```clj
(require '[reitit.core :as r])
(def router
(r/router
[["/api/ping" ::ping]
    ["/api/orders/:id" ::order]]))
(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 {:id 2})
; #Match{:template "/api/orders/:id",
2017-10-31 08:28:48 +00:00
;       :meta {:name ::order},
; :result nil,
; :params {:id 2},
; :path "/api/orders/2"}
```
2017-11-12 19:44:40 +00:00
## More info
2017-08-07 11:08:39 +00:00
2017-09-14 13:33:36 +00:00
[Check out the full documentation!](https://metosin.github.io/reitit/)
2017-11-12 19:44:40 +00:00
Roadmap is mostly written in [issues](https://github.com/metosin/reitit/issues).
There is also a [#reitit](https://clojurians.slack.com/messages/reitit/) channel in [Clojurians slack](http://clojurians.net/).
## Special thanks
To all Clojure(Script) routing libs out there, expecially to
[Ataraxy](https://github.com/weavejester/ataraxy), [Bide](https://github.com/funcool/bide), [Bidi](https://github.com/juxt/bidi), [Compojure](https://github.com/weavejester/compojure) and
2017-08-09 07:36:57 +00:00
[Pedestal](https://github.com/pedestal/pedestal/tree/master/route).
2017-08-07 11:08:39 +00:00
2017-11-12 19:44:40 +00:00
Also to [Compojure-api](https://github.com/metosin/compojure-api), [Kekkonen](https://github.com/metosin/kekkonen), [Ring-swagger](https://github.com/metosin/ring-swagger) and [Yada](https://github.com/juxt/yada) and for ideas, coercion & stuff.
2017-09-08 05:29:39 +00:00
2017-11-12 19:44:40 +00:00
And, of course, to: [Schema](https://github.com/plumatic/schema) and [clojure.spec](https://clojure.org/about/spec).
2017-09-08 05:29:39 +00:00
## Development instructions
The documentation is built with [gitbook](https://toolchain.gitbook.com). To preview your changes locally:
```bash
npm install -g gitbook-cli
2017-09-18 04:36:02 +00:00
gitbook install
gitbook serve
```
To bump up version:
2017-10-29 07:30:48 +00:00
```bash
# 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
```
2017-08-07 11:08:39 +00:00
## License
Copyright © 2017 [Metosin Oy](http://www.metosin.fi)
2017-08-07 11:08:39 +00:00
Distributed under the Eclipse Public License, the same as Clojure.