mirror of
https://github.com/metosin/reitit.git
synced 2025-12-16 16:01:11 +00:00
2.4 KiB
2.4 KiB
0.1.1-SNAPSHOT
reitit-core
match-by-pathencodes parameters into strings using (internal)reitit.impl/IntoStringprotocol. Handles all of: strings, numbers, keywords, booleans, objects. Fixes #75.
(require '[reitit.core :as r])
(r/match-by-name
(r/router
["/coffee/:type" ::coffee])
::coffee
{:type :luwak})
;#Match{:template "/coffee/:type",
; :data {:name :user/coffee},
; :result nil,
; :path-params {:type "luwak"},
; :path "/coffee/luwak"}
reitit-ring
reitit.ring/default-handlernow works correctly with async ring- new helper
reitit.ring/routerto compose routes outside of a router. reitit.ring/create-resource-handlerfunction to serve static routes. See (docs)[https://metosin.github.io/reitit/ring/static.html].
reitit-swagger
- New module to produce swagger-docs from routing tree, including
Coerciondefinitions. Works with both middleware & interceptors and Schema & Spec. See docs.
(require '[reitit.ring :as ring])
(require '[reitit.swagger :as swagger])
(require '[reitit.ring.coercion :as rrc])
(require '[reitit.coercion.spec :as spec])
(require '[reitit.coercion.schema :as schema])
(require '[schema.core :refer [Int]])
(ring/ring-handler
(ring/router
["/api"
{:swagger {:id ::math}}
["/swagger.json"
{:get {:no-doc true
:swagger {:info {:title "my-api"}}
:handler (swagger/create-swagger-handler)}}]
["/spec" {:coercion spec/coercion}
["/plus"
{:get {:summary "plus"
:parameters {:query {:x int?, :y int?}}
:responses {200 {:body {:total int?}}}
:handler (fn [{{{:keys [x y]} :query} :parameters}]
{:status 200, :body {:total (+ x y)}})}}]]
["/schema" {:coercion schema/coercion}
["/plus"
{:get {:summary "plus"
:parameters {:query {:x Int, :y Int}}
:responses {200 {:body {:total Int}}}
:handler (fn [{{{:keys [x y]} :query} :parameters}]
{:status 200, :body {:total (+ x y)}})}}]]]
{:data {:middleware [rrc/coerce-exceptions-middleware
rrc/coerce-request-middleware
rrc/coerce-response-middleware
swagger/swagger-feature]}}))
0.1.0 (2018-2-19)
- First release