reitit/README.md

88 lines
2.7 KiB
Markdown
Raw Normal View History

# reitit [![Build Status](https://travis-ci.org/metosin/reitit.svg?branch=master)](https://travis-ci.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
* Fast
See [Issues](https://github.com/metosin/reitit/issues) for roadmap.
2017-08-17 06:24:23 +00:00
2017-08-07 11:08:39 +00:00
## Latest version
[![Clojars Project](http://clojars.org/metosin/reitit/latest-version.svg)](http://clojars.org/metosin/reitit)
## Quick start
```clj
(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"}
```
2017-09-14 13:33:36 +00:00
## Documentation
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/)
## 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-09-08 05:29:39 +00:00
Also to [Compojure-api](https://github.com/metosin/compojure-api), [Kekkonen](https://github.com/metosin/kekkonen) and [Ring-swagger](https://github.com/metosin/ring-swagger) and for the data-driven syntax, coercion & stuff.
And some [Yada](https://github.com/juxt/yada) too.
## 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.