A router Duct framework that uses Reitit. This library is also compatible with Integrant.
Add the following dependency to your deps.edn file:
org.duct-framework/router.reitit {:mvn/version "0.3.0"}
Or to your Leiningen project file:
[org.duct-framework/router.reitit "0.3.0"]
Add the :duct.router/reitit
key to your Duct (or Integrant)
configuration:
{:duct.router/reitit
{:routes ["/" {:get #ig/ref :example.handler/root}]}
:example.handler/root {}}
Once initiated the :duct.router/reitit
key will produce a Ring
handler.
There are four top level options available:
:routes
- the Reitit routing data:middleware
- a vector of middleware to apply to the Ring handler:data
- data to add to every Reitit route:handlers
- a vector of handlers to fall back
The :data
key takes a map and acts as it does in Reitit, except for
the following keys:
:muuntaja
- a map of Muuntaja options to be merged with the defaults:coercion
- one of::malli
,:schema
or:spec
These keys will automatically add relevant middleware.
The :duct.handler.reitit/default
key will initiate into a handler
using the Reitit create-default-handler
function. It takes the
following options:
:not-found
- a handler for 404 HTTP errors:method-not-allowed
- a handler for 405 HTTP errors:not-acceptable
- a handler for 406 HTTP errors
This can be referenced in the :handlers
vector to provide a default
handler:
{:duct.router/reitit
{:routes ["/" {:get #ig/ref :example.handler/root}]
:handlers [#ig/ref :duct.handler.reitit/default]}
:duct.handler.reitit/default {}
:example.handler/root {}}
Copyright © 2024 James Reeves
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.