diff --git a/advanced/composing_routers.html b/advanced/composing_routers.html index 7a50383d..bc721b9a 100644 --- a/advanced/composing_routers.html +++ b/advanced/composing_routers.html @@ -459,7 +459,20 @@ -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -1086,7 +1099,7 @@ diff --git a/advanced/configuring_routers.html b/advanced/configuring_routers.html index 30d79252..b606f366 100644 --- a/advanced/configuring_routers.html +++ b/advanced/configuring_routers.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -792,7 +805,7 @@ diff --git a/advanced/dev_workflow.html b/advanced/dev_workflow.html index 9fb095d3..9083a91c 100644 --- a/advanced/dev_workflow.html +++ b/advanced/dev_workflow.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -851,7 +864,7 @@ diff --git a/advanced/different_routers.html b/advanced/different_routers.html index 201267b4..bf96d1f9 100644 --- a/advanced/different_routers.html +++ b/advanced/different_routers.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -795,7 +808,7 @@ diff --git a/advanced/index.html b/advanced/index.html index 1c59a4e2..aa60517c 100644 --- a/advanced/index.html +++ b/advanced/index.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -747,7 +760,7 @@ diff --git a/advanced/route_validation.html b/advanced/route_validation.html index b97cc1b1..1d8f4b95 100644 --- a/advanced/route_validation.html +++ b/advanced/route_validation.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -887,7 +900,7 @@ diff --git a/basics/index.html b/basics/index.html index bee3f07f..521401b5 100644 --- a/basics/index.html +++ b/basics/index.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -750,7 +763,7 @@ diff --git a/basics/name_based_routing.html b/basics/name_based_routing.html index 16a8eb4f..d357b262 100644 --- a/basics/name_based_routing.html +++ b/basics/name_based_routing.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -810,7 +823,7 @@ diff --git a/basics/path_based_routing.html b/basics/path_based_routing.html index 8601e9b6..5cc05bd0 100644 --- a/basics/path_based_routing.html +++ b/basics/path_based_routing.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -768,7 +781,7 @@ diff --git a/basics/route_conflicts.html b/basics/route_conflicts.html index b93d4333..dbab517a 100644 --- a/basics/route_conflicts.html +++ b/basics/route_conflicts.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -811,7 +824,7 @@ diff --git a/basics/route_data.html b/basics/route_data.html index ea266d46..6e11d0fa 100644 --- a/basics/route_data.html +++ b/basics/route_data.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -809,7 +822,7 @@ diff --git a/basics/route_data_validation.html b/basics/route_data_validation.html index d5a17241..ac3cb1d5 100644 --- a/basics/route_data_validation.html +++ b/basics/route_data_validation.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -861,7 +874,7 @@ diff --git a/basics/route_syntax.html b/basics/route_syntax.html index 11a9165b..bcb59a09 100644 --- a/basics/route_syntax.html +++ b/basics/route_syntax.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -795,7 +808,7 @@ diff --git a/basics/router.html b/basics/router.html index e0594ff1..a7b2ace5 100644 --- a/basics/router.html +++ b/basics/router.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -778,7 +791,7 @@ diff --git a/coercion/clojure_spec_coercion.html b/coercion/clojure_spec_coercion.html index 57322b7a..6038fa69 100644 --- a/coercion/clojure_spec_coercion.html +++ b/coercion/clojure_spec_coercion.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -780,7 +793,7 @@ diff --git a/coercion/coercion.html b/coercion/coercion.html index 23019a09..011448ee 100644 --- a/coercion/coercion.html +++ b/coercion/coercion.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -875,7 +888,7 @@ diff --git a/coercion/data_spec_coercion.html b/coercion/data_spec_coercion.html index 34b5d3c9..bc44c817 100644 --- a/coercion/data_spec_coercion.html +++ b/coercion/data_spec_coercion.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -774,7 +787,7 @@ diff --git a/coercion/index.html b/coercion/index.html index b585ae91..1b910335 100644 --- a/coercion/index.html +++ b/coercion/index.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -747,7 +760,7 @@ diff --git a/coercion/schema_coercion.html b/coercion/schema_coercion.html index e679ac29..942eb5f0 100644 --- a/coercion/schema_coercion.html +++ b/coercion/schema_coercion.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -775,7 +788,7 @@ diff --git a/development.html b/development.html index 8411a58e..171c001d 100644 --- a/development.html +++ b/development.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -765,7 +778,7 @@ lein test diff --git a/faq.html b/faq.html index 8ac25a5e..084c8012 100644 --- a/faq.html +++ b/faq.html @@ -457,7 +457,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -470,7 +483,7 @@
  • -
  • +
  • @@ -483,7 +496,7 @@
  • -
  • +
  • @@ -496,7 +509,7 @@
  • -
  • +
  • @@ -509,7 +522,7 @@
  • -
  • +
  • @@ -522,7 +535,7 @@
  • -
  • +
  • @@ -843,7 +856,7 @@ diff --git a/frontend/basics.html b/frontend/basics.html index 36317ca2..9f3bca2b 100644 --- a/frontend/basics.html +++ b/frontend/basics.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -742,7 +755,7 @@ diff --git a/frontend/browser.html b/frontend/browser.html index bb7781fd..8c540cc8 100644 --- a/frontend/browser.html +++ b/frontend/browser.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -742,7 +755,7 @@ diff --git a/frontend/controllers.html b/frontend/controllers.html index fdac49d9..985739f3 100644 --- a/frontend/controllers.html +++ b/frontend/controllers.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -742,7 +755,7 @@ diff --git a/frontend/index.html b/frontend/index.html index 5d7eade9..603ea2c7 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -746,7 +759,7 @@ diff --git a/images/swagger.png b/images/swagger.png index 46d28517..9d5a55b8 100644 Binary files a/images/swagger.png and b/images/swagger.png differ diff --git a/index.html b/index.html index fc9e6235..5c772f94 100644 --- a/index.html +++ b/index.html @@ -457,7 +457,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -470,7 +483,7 @@
  • -
  • +
  • @@ -483,7 +496,7 @@
  • -
  • +
  • @@ -496,7 +509,7 @@
  • -
  • +
  • @@ -509,7 +522,7 @@
  • -
  • +
  • @@ -522,7 +535,7 @@
  • -
  • +
  • @@ -865,7 +878,7 @@ diff --git a/interceptors.html b/interceptors.html index 689ea00f..2bfad8f7 100644 --- a/interceptors.html +++ b/interceptors.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -810,7 +823,7 @@ diff --git a/performance.html b/performance.html index 19732fb1..25189e7b 100644 --- a/performance.html +++ b/performance.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -821,7 +834,7 @@ diff --git a/ring/coercion.html b/ring/coercion.html index 45d592ef..9d898b50 100644 --- a/ring/coercion.html +++ b/ring/coercion.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -876,7 +889,7 @@ diff --git a/ring/compiling_middleware.html b/ring/compiling_middleware.html index 5694aa8b..2f504b06 100644 --- a/ring/compiling_middleware.html +++ b/ring/compiling_middleware.html @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -803,7 +816,7 @@ diff --git a/ring/data_driven_middleware.html b/ring/data_driven_middleware.html index 5ded6385..1193016a 100644 --- a/ring/data_driven_middleware.html +++ b/ring/data_driven_middleware.html @@ -57,7 +57,7 @@ - + @@ -459,7 +459,20 @@
  • -
  • +
  • + + + + + Transformations Middleware Chain + + + + + +
  • + +
  • @@ -472,7 +485,7 @@
  • -
  • +
  • @@ -485,7 +498,7 @@
  • -
  • +
  • @@ -498,7 +511,7 @@
  • -
  • +
  • @@ -511,7 +524,7 @@
  • -
  • +
  • @@ -524,7 +537,7 @@
  • -
  • +
  • @@ -779,39 +792,8 @@

    Compiling middleware

    Middleware can be optimized against an endpoint using middleware compilation.

    -

    Transforming the middleware chain

    -

    There is an extra option in ring-router (actually, in the undelaying middleware-router): :reitit.middleware/transform to transform the middleware chain per endpoint. It sees the vector of compiled middleware and should return a new vector of middleware.

    -

    Adding debug middleware between all other middleware

    -
    (def app
    -  (ring/ring-handler
    -    (ring/router
    -      ["/api" {:middleware [[wrap 1] [wrap2 2]]}
    -       ["/ping" {:get {:middleware [[wrap3 3]]
    -                       :handler handler}}]]
    -      {::middleware/transform #(interleave % (repeat [wrap :debug]))})))
    -
    -
    (app {:request-method :get, :uri "/api/ping"})
    -; {:status 200, :body [1 :debug 2 :debug 3 :debug :handler]}
    -
    -

    Reversing the middleware chain

    -
    (def app
    -  (ring/ring-handler
    -    (ring/router
    -      ["/api" {:middleware [[wrap 1] [wrap2 2]]}
    -       ["/ping" {:get {:middleware [[wrap3 3]]
    -                       :handler handler}}]]
    -      {::middleware/transform reverse)})))
    -
    -
    (app {:request-method :get, :uri "/api/ping"})
    -; {:status 200, :body [3 2 1 :handler]}
    -

    Ideas for the future