Liking cljdoc? Tell your friends :D

Duct module.web Build Status

A Duct module that adds a web server and useful middleware to a configuration. This is the basis of all web applications built with Duct.

This current version is experimental and will only work with the new duct.main tool. The artifact group name has been changed to prevent accidental upgrades. The version prior to this change was: 0.7.4.

Installation

Add the following dependency to your deps.edn file:

org.duct-framework/module.web {:mvn/version "0.9.0"}

Or to your Leiningen project file:

[org.duct-framework/module.web "0.9.0"]

Usage

To add this module to your configuration, add a reference to :duct.module/web:

{:duct.module/web {}}

To load in middleware and handlers appropriate to develop web services, add the :api keyword to the :features option:

{:duct.module/web {:features #{:api}}}

Or :site if you want to develop a user-facing web application:

{:duct.module/web {:features #{:site}}}

Or both if you want both sets of features combined.

By default, the module uses the :duct.server.http/jetty key for the webserver, as supplied by the server.http.jetty library. However, if a key deriving from :duct.server/http already exists in the configuration, the module will use that instead.

Similarly, the module includes the :duct.router/cascading key for routing. This is a simple router that takes an ordered vector of handlers, and will return the first non-nil response for a given request.

For example:

{:duct.router/cascading [#ig/ref :foo.endpoint/example1
                         #ig/ref :foo.endpoint/example2]
 :foo.endpoint/example1 {}
 :foo.endpoint/example2 {}}

If a key deriving from :duct/router exists in the configuration already, then that is used instead.

License

Copyright © 2024 James Reeves

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

Can you improve this documentation?Edit on GitHub

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

× close