Liking cljdoc? Tell your friends :D

Different Routers

Reitit ships with several different implementations for the Router protocol, originally based on the Pedestal implementation. router function selects the most suitable implementation by inspecting the expanded routes. The implementation can be set manually using :router option, see configuring routers.

routerdescription
:linear-routerMatches the routes one-by-one starting from the top until a match is found. Slow, but works with all route trees.
:trie-routerRouter that creates a optimized search trie out of an route table. Much faster than :linear-router for wildcard routes. Valid only if there are no Route conflicts.
:lookup-routerFast router, uses hash-lookup to resolve the route. Valid if no paths have path or catch-all parameters and there are no Route conflicts.
:single-static-path-routerSuper fast router: string-matches a route. Valid only if there is one static route.
:mixed-routerContains two routers: :trie-router for wildcard routes and a :lookup-router or :single-static-path-router for static routes. Valid only if there are no Route conflicts.
:quarantine-routerContains two routers: :mixed-router for non-conflicting routes and a :linear-router for conflicting routes.

The router name can be asked from the router:

(require '[reitit.core :as r])

(def router
  (r/router
    [["/ping" ::ping]
     ["/api/:users" ::users]]))

(r/router-name router)
; :mixed-router

Overriding the router implementation:

(require '[reitit.core :as r])

(def router
  (r/router
    [["/ping" ::ping]
     ["/api/:users" ::users]]
    {:router r/linear-router}))

(r/router-name router)
; :linear-router

Can you improve this documentation? These fine people already did:
Tommi Reiman & Raphaël Saunier
Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close