diff --git a/compiling_middleware.html b/compiling_middleware.html index 73c0873b..4db286a2 100644 --- a/compiling_middleware.html +++ b/compiling_middleware.html @@ -373,7 +373,7 @@ Expects a :coercion of type `reitit.coercion.protocol/Coercion` and :responses from route meta, otherwise does not mount." (middleware/create - {:name ::coerce-response + {:name ::coerce-response :gen (fn [{:keys [responses coercion opts]} _] (if (and coercion responses) (let [coercers (response-coercers coercion responses opts)] @@ -428,7 +428,7 @@ diff --git a/configuring_routers.html b/configuring_routers.html index b468f75d..70028804 100644 --- a/configuring_routers.html +++ b/configuring_routers.html @@ -403,7 +403,7 @@ diff --git a/gitbook/gitbook-plugin-highlight/ebook.css b/gitbook/gitbook-plugin-highlight/ebook.css index cecaaab5..655c965b 100644 --- a/gitbook/gitbook-plugin-highlight/ebook.css +++ b/gitbook/gitbook-plugin-highlight/ebook.css @@ -1,135 +1,96 @@ pre, code { + /* From https://github.com/isagalaev/highlight.js/blob/9.8.0/src/styles/tomorrow.css */ /* http://jmblog.github.io/color-themes-for-highlightjs */ /* Tomorrow Comment */ /* Tomorrow Red */ /* Tomorrow Orange */ /* Tomorrow Yellow */ /* Tomorrow Green */ - /* Tomorrow Aqua */ /* Tomorrow Blue */ /* Tomorrow Purple */ } pre .hljs-comment, code .hljs-comment, -pre .hljs-title, -code .hljs-title { +pre .hljs-quote, +code .hljs-quote { color: #8e908c; } pre .hljs-variable, code .hljs-variable, -pre .hljs-attribute, -code .hljs-attribute, +pre .hljs-template-variable, +code .hljs-template-variable, pre .hljs-tag, code .hljs-tag, +pre .hljs-name, +code .hljs-name, +pre .hljs-selector-id, +code .hljs-selector-id, +pre .hljs-selector-class, +code .hljs-selector-class, pre .hljs-regexp, code .hljs-regexp, pre .hljs-deletion, -code .hljs-deletion, -pre .ruby .hljs-constant, -code .ruby .hljs-constant, -pre .xml .hljs-tag .hljs-title, -code .xml .hljs-tag .hljs-title, -pre .xml .hljs-pi, -code .xml .hljs-pi, -pre .xml .hljs-doctype, -code .xml .hljs-doctype, -pre .html .hljs-doctype, -code .html .hljs-doctype, -pre .css .hljs-id, -code .css .hljs-id, -pre .css .hljs-class, -code .css .hljs-class, -pre .css .hljs-pseudo, -code .css .hljs-pseudo { +code .hljs-deletion { color: #c82829; } pre .hljs-number, code .hljs-number, -pre .hljs-preprocessor, -code .hljs-preprocessor, -pre .hljs-pragma, -code .hljs-pragma, pre .hljs-built_in, code .hljs-built_in, +pre .hljs-builtin-name, +code .hljs-builtin-name, pre .hljs-literal, code .hljs-literal, +pre .hljs-type, +code .hljs-type, pre .hljs-params, code .hljs-params, -pre .hljs-constant, -code .hljs-constant { +pre .hljs-meta, +code .hljs-meta, +pre .hljs-link, +code .hljs-link { color: #f5871f; } -pre .ruby .hljs-class .hljs-title, -code .ruby .hljs-class .hljs-title, -pre .css .hljs-rules .hljs-attribute, -code .css .hljs-rules .hljs-attribute { +pre .hljs-attribute, +code .hljs-attribute { color: #eab700; } pre .hljs-string, code .hljs-string, -pre .hljs-value, -code .hljs-value, -pre .hljs-inheritance, -code .hljs-inheritance, -pre .hljs-header, -code .hljs-header, +pre .hljs-symbol, +code .hljs-symbol, +pre .hljs-bullet, +code .hljs-bullet, pre .hljs-addition, -code .hljs-addition, -pre .ruby .hljs-symbol, -code .ruby .hljs-symbol, -pre .xml .hljs-cdata, -code .xml .hljs-cdata { +code .hljs-addition { color: #718c00; } -pre .css .hljs-hexcolor, -code .css .hljs-hexcolor { - color: #3e999f; -} -pre .hljs-function, -code .hljs-function, -pre .python .hljs-decorator, -code .python .hljs-decorator, -pre .python .hljs-title, -code .python .hljs-title, -pre .ruby .hljs-function .hljs-title, -code .ruby .hljs-function .hljs-title, -pre .ruby .hljs-title .hljs-keyword, -code .ruby .hljs-title .hljs-keyword, -pre .perl .hljs-sub, -code .perl .hljs-sub, -pre .javascript .hljs-title, -code .javascript .hljs-title, -pre .coffeescript .hljs-title, -code .coffeescript .hljs-title { +pre .hljs-title, +code .hljs-title, +pre .hljs-section, +code .hljs-section { color: #4271ae; } pre .hljs-keyword, code .hljs-keyword, -pre .javascript .hljs-function, -code .javascript .hljs-function { +pre .hljs-selector-tag, +code .hljs-selector-tag { color: #8959a8; } pre .hljs, code .hljs { display: block; + overflow-x: auto; background: white; color: #4d4d4c; padding: 0.5em; } -pre .coffeescript .javascript, -code .coffeescript .javascript, -pre .javascript .xml, -code .javascript .xml, -pre .tex .hljs-formula, -code .tex .hljs-formula, -pre .xml .javascript, -code .xml .javascript, -pre .xml .vbscript, -code .xml .vbscript, -pre .xml .css, -code .xml .css, -pre .xml .hljs-cdata, -code .xml .hljs-cdata { - opacity: 0.5; +pre .hljs-emphasis, +code .hljs-emphasis { + font-style: italic; +} +pre .hljs-strong, +code .hljs-strong { + font-weight: bold; } diff --git a/gitbook/gitbook-plugin-highlight/website.css b/gitbook/gitbook-plugin-highlight/website.css index 6674448f..687f4a5c 100644 --- a/gitbook/gitbook-plugin-highlight/website.css +++ b/gitbook/gitbook-plugin-highlight/website.css @@ -1,140 +1,102 @@ .book .book-body .page-wrapper .page-inner section.normal pre, .book .book-body .page-wrapper .page-inner section.normal code { + /* From https://github.com/isagalaev/highlight.js/blob/9.8.0/src/styles/tomorrow.css */ /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ /* Tomorrow Comment */ /* Tomorrow Red */ /* Tomorrow Orange */ /* Tomorrow Yellow */ /* Tomorrow Green */ - /* Tomorrow Aqua */ /* Tomorrow Blue */ /* Tomorrow Purple */ } .book .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, .book .book-body .page-wrapper .page-inner section.normal code .hljs-comment, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-title { +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-quote, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-quote { color: #8e908c; } .book .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, .book .book-body .page-wrapper .page-inner section.normal code .hljs-variable, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-template-variable, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-template-variable, .book .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, .book .book-body .page-wrapper .page-inner section.normal code .hljs-tag, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-name, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-name, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-selector-id, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-selector-id, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-selector-class, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-selector-class, .book .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, .book .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, .book .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { +.book .book-body .page-wrapper .page-inner section.normal code .hljs-deletion { color: #c82829; } .book .book-body .page-wrapper .page-inner section.normal pre .hljs-number, .book .book-body .page-wrapper .page-inner section.normal code .hljs-number, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, .book .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, .book .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-builtin-name, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-builtin-name, .book .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, .book .book-body .page-wrapper .page-inner section.normal code .hljs-literal, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-type, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-type, .book .book-body .page-wrapper .page-inner section.normal pre .hljs-params, .book .book-body .page-wrapper .page-inner section.normal code .hljs-params, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-constant { +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-meta, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-meta, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-link, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-link { color: #f5871f; } -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-attribute { color: #eab700; } .book .book-body .page-wrapper .page-inner section.normal pre .hljs-string, .book .book-body .page-wrapper .page-inner section.normal code .hljs-string, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-value, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-value, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-header, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-header, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-symbol, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-bullet, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-bullet, .book .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-addition, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { +.book .book-body .page-wrapper .page-inner section.normal code .hljs-addition { color: #718c00; } -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { - color: #3e999f; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, -.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, -.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, -.book .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-section, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-section { color: #4271ae; } .book .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, .book .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-selector-tag, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-selector-tag { color: #8959a8; } .book .book-body .page-wrapper .page-inner section.normal pre .hljs, .book .book-body .page-wrapper .page-inner section.normal code .hljs { display: block; + overflow-x: auto; background: white; color: #4d4d4c; padding: 0.5em; } -.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, -.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .xml, -.book .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, -.book .book-body .page-wrapper .page-inner section.normal code .xml .javascript, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, -.book .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .css, -.book .book-body .page-wrapper .page-inner section.normal code .xml .css, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - opacity: 0.5; +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-emphasis, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-emphasis { + font-style: italic; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-strong, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-strong { + font-weight: bold; } .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, .book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { + /* From https://github.com/isagalaev/highlight.js/blob/9.8.0/src/styles/solarized-light.css */ /* Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull @@ -146,157 +108,108 @@ Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull var gitbook = gitbook || []; gitbook.push(function() { - gitbook.page.hasChanged({"page":{"title":"Introduction","level":"1.1","depth":1,"next":{"title":"Routing","level":"1.2","depth":1,"ref":"","articles":[{"title":"Route syntax","level":"1.2.1","depth":2,"path":"routing/route_syntax.md","ref":"routing/route_syntax.md","articles":[]},{"title":"Routers","level":"1.2.2","depth":2,"path":"routing/routers.md","ref":"routing/routers.md","articles":[]},{"title":"Route metadata","level":"1.2.3","depth":2,"path":"routing/route_metadata.md","ref":"routing/route_metadata.md","articles":[]},{"title":"Route conflicts","level":"1.2.4","depth":2,"path":"routing/route_conflicts.md","ref":"routing/route_conflicts.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["editlink","github"],"root":"doc","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":false,"base":"https://github.com/metosin/reitit/tree/master/doc"},"github":{"url":"https://github.com/metosin/reitit"},"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"gitbook":"*"},"file":{"path":"README.md","mtime":"2017-09-14T14:20:32.192Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2017-09-14T14:21:05.600Z"},"basePath":".","book":{"language":""}}); + gitbook.page.hasChanged({"page":{"title":"Introduction","level":"1.1","depth":1,"next":{"title":"Routing","level":"1.2","depth":1,"ref":"","articles":[{"title":"Route syntax","level":"1.2.1","depth":2,"path":"routing/route_syntax.md","ref":"routing/route_syntax.md","articles":[]},{"title":"Routers","level":"1.2.2","depth":2,"path":"routing/routers.md","ref":"routing/routers.md","articles":[]},{"title":"Route metadata","level":"1.2.3","depth":2,"path":"routing/route_metadata.md","ref":"routing/route_metadata.md","articles":[]},{"title":"Route conflicts","level":"1.2.4","depth":2,"path":"routing/route_conflicts.md","ref":"routing/route_conflicts.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["editlink","github","highlight"],"root":"doc","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"editlink":{"label":"Edit This Page","multilingual":false,"base":"https://github.com/metosin/reitit/tree/master/doc"},"github":{"url":"https://github.com/metosin/reitit"},"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"gitbook":"*"},"file":{"path":"README.md","mtime":"2017-09-14T14:39:52.093Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2017-09-14T14:40:29.150Z"},"basePath":".","book":{"language":""}}); }); diff --git a/parameter_coercion.html b/parameter_coercion.html index 7662871a..86ec20f0 100644 --- a/parameter_coercion.html +++ b/parameter_coercion.html @@ -373,18 +373,18 @@ (require '[clojure.spec.alpha :as s]) (require '[spec-tools.core :as st]) -(s/def ::x (st/spec int?)) -(s/def ::y (st/spec int?)) -(s/def ::total int?) -(s/def ::request (s/keys :req-un [::x ::y])) -(s/def ::response (s/keys :req-un [::total])) +(s/def ::x (st/spec int?)) +(s/def ::y (st/spec int?)) +(s/def ::total int?) +(s/def ::request (s/keys :req-un [::x ::y])) +(s/def ::response (s/keys :req-un [::total])) (def app (ring/ring-handler (ring/router ["/api" - ["/ping" {:parameters {:body ::request} - :responses {200 {:schema ::response}} + ["/ping" {:parameters {:body ::request} + :responses {200 {:schema ::response}} :get {:handler (fn [{{{:keys [x y]} :body} :parameters}] {:status 200 :body {:total (+ x y)}})}}]] @@ -441,7 +441,7 @@ diff --git a/ring.html b/ring.html index 22f49072..7ee7da23 100644 --- a/ring.html +++ b/ring.html @@ -356,7 +356,7 @@
(def app
   (ring/ring-handler
     (ring/router
-      ["/ping" {:name ::ping
+      ["/ping" {:name ::ping
                 :get handler
                 :post handler}])))
 
@@ -369,7 +369,7 @@
 

Reverse routing:

(-> app
     (ring/get-router)
-    (reitit/match-by-name ::ping)
+    (reitit/match-by-name ::ping)
     :path)
 ; "/ping"
 
@@ -382,9 +382,9 @@

A middleware and a handler:

(defn wrap [handler id]
   (fn [request]
-    (handler (update request ::acc (fnil conj []) id))))
+    (handler (update request ::acc (fnil conj []) id))))
 
-(defn handler [{:keys [::acc]}]
+(defn handler [{:keys [::acc]}]
   {:status 200, :body (conj acc :handler)})
 

App with nested middleware:

@@ -435,14 +435,14 @@ (def wrap2 (middleware/create - {:name ::wrap2 + {:name ::wrap2 :description "a nice little mw, takes 1 arg." :wrap wrap}))

As plain map:

;; plain map
 (def wrap3
-  {:name ::wrap3
+  {:name ::wrap3
    :description "a nice little mw, :api as arg"
    :wrap (fn [handler]
            (wrap handler :api))})
@@ -455,8 +455,8 @@
 
(require '[clojure.set :as set])
 
 (defn wrap-enforce-roles [handler]
-  (fn [{:keys [::roles] :as request}]
-    (let [required (some-> request (ring/get-match) :meta ::roles)]
+  (fn [{:keys [::roles] :as request}]
+    (let [required (some-> request (ring/get-match) :meta ::roles)]
       (if (and (seq required) (not (set/intersection required roles)))
         {:status 403, :body "forbidden"}
         (handler request)))))
@@ -469,7 +469,7 @@
     (ring/router
       [["/api"
         ["/ping" handler]
-        ["/admin" {::roles #{:admin}}
+        ["/admin" {::roles #{:admin}}
          ["/ping" handler]]]]
       {:meta {:middleware [wrap-enforce-roles]}})))
 
@@ -482,7 +482,7 @@ ; {:status 403, :body "forbidden"}

Authorized access to guarded route:

-
(app {:request-method :get, :uri "/api/admin/ping", ::roles #{:admin}})
+
(app {:request-method :get, :uri "/api/admin/ping", ::roles #{:admin}})
 ; {:status 200, :body "ok"}
 
@@ -528,7 +528,7 @@ diff --git a/routing/route_conflicts.html b/routing/route_conflicts.html index 8454e402..c5c1c683 100644 --- a/routing/route_conflicts.html +++ b/routing/route_conflicts.html @@ -386,7 +386,7 @@ diff --git a/routing/route_metadata.html b/routing/route_metadata.html index cb65751d..be5f76d7 100644 --- a/routing/route_metadata.html +++ b/routing/route_metadata.html @@ -327,15 +327,15 @@

A router based on nested route tree:

(def router
   (reitit/router
-    ["/api" {:interceptors [::api]}
-     ["/ping" ::ping]
+    ["/api" {:interceptors [::api]}
+     ["/ping" ::ping]
      ["/admin" {:roles #{:admin}}
-      ["/users" ::users]
-      ["/db" {:interceptors [::db]
+      ["/users" ::users]
+      ["/db" {:interceptors [::db]
               :roles ^:replace #{:db-admin}}
        ["/:db" {:parameters {:db String}}
-        ["/drop" ::drop-db]
-        ["/stats" ::db-stats]]]]]))
+        ["/drop" ::drop-db]
+        ["/stats" ::db-stats]]]]]))
 

Resolved route tree:

(reitit/routes router)
@@ -408,7 +408,7 @@
     
 
diff --git a/routing/route_syntax.html b/routing/route_syntax.html
index ca2ce78e..fbcbd4e5 100644
--- a/routing/route_syntax.html
+++ b/routing/route_syntax.html
@@ -330,8 +330,8 @@
  ["/pong"]]
 

Routes with meta-data:

-
[["/ping" ::ping]
- ["/pong" {:name ::pong}]]
+
[["/ping" ::ping]
+ ["/pong" {:name ::pong}]]
 

Routes with path and catch-all parameters:

[["/users/:user-id"]
@@ -339,15 +339,15 @@
 

Nested routes with meta-data:

["/api"
- ["/admin" {:middleware [::admin]}
-  ["/user" ::user]
-  ["/db" ::db]
- ["/ping" ::ping]]
+ ["/admin" {:middleware [::admin]}
+  ["/user" ::user]
+  ["/db" ::db]
+ ["/ping" ::ping]]
 

Same routes flattened:

-
[["/api/admin/user" {:middleware [::admin], :name ::user}
- ["/api/admin/db" {:middleware [::admin], :name ::db}
- ["/api/ping" ::ping]]
+
[["/api/admin/user" {:middleware [::admin], :name ::user}
+ ["/api/admin/db" {:middleware [::admin], :name ::db}
+ ["/api/ping" ::ping]]
 
@@ -388,7 +388,7 @@ diff --git a/routing/routers.html b/routing/routers.html index 66e281e7..5231c52a 100644 --- a/routing/routers.html +++ b/routing/routers.html @@ -331,8 +331,8 @@ (def router (reitit/router [["/api" - ["/ping" ::ping] - ["/user/:id" ::user]]])) + ["/ping" ::ping] + ["/user/:id" ::user]]]))

:mixed-router is created (both static & wild routes are found):

(reitit/router-name router)
@@ -359,18 +359,18 @@
 ;        :params {:id "1"}}
 

Name-based (reverse) routing

-
(reitit/match-by-name router ::user)
+
(reitit/match-by-name router ::user)
 ; #PartialMatch{:template "/api/user/:id",
 ;               :meta {:name :user/user},
 ;               :result nil,
 ;               :params nil,
 ;               :required #{:id}}
 
-(reitit/partial-match? (reitit/match-by-name router ::user))
+(reitit/partial-match? (reitit/match-by-name router ::user))
 ; true
 

Only a partial match. Let's provide the path-parameters:

-
(reitit/match-by-name router ::user {:id "1"})
+
(reitit/match-by-name router ::user {:id "1"})
 ; #Match{:template "/api/user/:id"
 ;        :meta {:name :user/user}
 ;        :path "/api/user/1"
@@ -378,7 +378,7 @@
 ;        :params {:id "1"}}
 

There is also a exception throwing version:

-
(reitit/match-by-name! router ::user)
+
(reitit/match-by-name! router ::user)
 ; ExceptionInfo missing path-params for route /api/user/:id: #{:id}
 
@@ -424,7 +424,7 @@ diff --git a/validating.html b/validating.html index 69035d8f..46fddad6 100644 --- a/validating.html +++ b/validating.html @@ -451,7 +451,7 @@