anchor.diff:              [:by-method "users"
                [:get list-users-handler]
                [:post create-users-handler]]])
  -----
  -
  -
  -==== Routin chain
  -
  -The chaining of handlers can be done in different ways:
  -
  -- *inline*: providing more that one handler for concrete http method.
  -- *multiple route*: providing a "match all" handlers at the start of prefix.
  -
  -The inline handlers chaining has this aspect:
  -
  -[source, clojure]
  -----
  -(ct/routes [[:get "users" permission-check-handler get-users-handler]])
  -----
  -
  -And as all the route is a chain/pipeline, you can setup "catch all" handlers at the start and use
  -them as interceptors:
  -
  -[source, clojure]
  -----
  -(def routes
  -  (ct/routes [[:prefix "api"
  -               [:any authentication-handler]
  -               [:get "users" users-handler]]]))
  -----
  -
  -For better understanding how the handlers chain delegation works, see the *Context* chapter
  -of this documentation.
  -
  -
  -==== Error handling
  -
  -The _catacumba_ router chain allows setup user defined error handling functions. Do it is very
  -simple, just add an other route entry of `:error` type:
  -
  -[source, clojure]
  -----
  -(def routes
  -  (ct/routes [[:error my-error-handler]
  -              [:get "users" users-handler]]))
  -----
  -
  -With previous code we have set a global (for all handlers in a route chain) error handler. But
  -there also possible set different error handlers for different prefixes:
  -
  -[source, clojure]
  -----
  -(def routes
  -  (ct/routes [[:prefix "api"
  -               [:error my-error-handler-for-this-prefix]
  -               [:any authentication-handler]
  -               [:get "users" users-handler]
  -               [:put "users" check-permissions-handler update-users-hander]]
  -              [:prefix "statix"
  -               [:error my-error-handler-for-this-other-prefix]
  -               [:assets "public"]]]))
  -----
  -
  -The error handler aspect is very similar to standard http handler, the difference is that it receives
  -additional parameter the throwable instance:
  -
  -[source, clojure]
  -----
  -(defn my-error-hanlder
  -  [ctx error]
  -  (http/internal-server-error (.getMessage error)))
   ----
   
   
  
positive.code: data: get/set headers and read the body (explained in previous sections).
  
  For compensate this, _catacumba_ comes with special chain handler that populates the context with
  basic request properties such as, headers, path and method: `basic-request` and let see how you can use
  it on your application:
  
  [source, clojure]
  ----
  
negative.code: | Mandatory & Regex | `:«token-name»:«regex»` | `[:get "foo/:id:\d+" handler]` | `/foo/2`
  | Optional & Regex | `:«token-name»?:«regex»` | `[:get "foo/:id?:\d+" handler]` | `/foo/2` and `/foo`
  |===========================================================================
  
  
  ==== Routin chain
  
  The chaining of handlers can be done in different ways:
  
  - *inline*: providing more that one handler for concrete http method.
  - *multiple route*: providing a "match all" handlers at the start of prefix.
  
  The inline handlers chaining has this aspect:
  
  [source, clojure]
  ----
  (ct/routes [[:get "users" permission-check-handler get-users-handler]])
  ----
  
  And as all the route is a chain/pipeline, you can setup "catch all" handlers at the start and use
  them as interceptors:
  
  [source, clojure]
  ----
  (def routes
    (ct/routes [[:prefix "api"
                 [:any authentication-handler]
                 [:get "users" users-handler]]]))
  ----
  
  For better understanding how the handlers chain delegation works, see the *Context* chapter
  of this documentation.
  
  
  ==== Error handling
  
  The _catacumba_ router chain allows setup user defined error handling functions. Do it is very
  simple, just add an other route entry of `:error` type:
  
  [source, clojure]
  ----
  (def routes
    (ct/routes [[:error my-error-handler]
                [:get "users" users-handler]]))
  ----
  
  With previous code we have set a global (for all handlers in a route chain) error handler. But
  there also possible set different error handlers for different prefixes:
  
  [source, clojure]
  ----
  (def routes
    (ct/routes [[:prefix "api"
                 [:error my-error-handler-for-this-prefix]
                 [:any authentication-handler]
                 [:get "users" users-handler]
                 [:put "users" check-permissions-handler update-users-hander]]
                [:prefix "admin"
                 [:error my-error-handler-for-this-other-prefix]
                 [:get "dashboard" my-dashboard-handler]]]))
  ----
  
  The error handler aspect is very similar to standard http handler, the difference is that it receives
  additional parameter the throwable instance:
  
  [source, clojure]
  ----
  (defn my-error-hanlder
    [ctx error]
    (http/internal-server-error (.getMessage error)))
  ----
  
  
  === Context
  