anchor.diff:  | 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
  
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:             [:by-method "users"
               [:get list-users-handler]
               [:post create-users-handler]]])
  ----
  
  
  