cowboy_router

The cowboy_router middleware maps the requested host and path to the handler to be used for processing the request. It uses the dispatch rules compiled from the routes given to the compile/1 function for this purpose. It adds the handler name and options to the environment as the values handler and handler_opts respectively.

Environment input:

  • dispatch = dispatch_rules()

Environment output:

  • handler = module()
  • handler_opts = any()

Types

bindings() = [{atom(), binary()}]

List of bindings found during routing.

constraints() = [IntConstraint | FunConstraint]

Types:

  • IntConstraint = {atom(), int}
  • FunConstraint = {atom(), function, Fun}
  • Fun = fun((binary()) -> true | {true, any()} | false)

List of constraints to apply to the bindings.

The int constraint will convert the binding to an integer. The fun constraint allows writing custom code for checking the bindings. Returning a new value from that fun allows replacing the current binding with a new value.

dispatch_rules() - opaque to the user

Rules for dispatching request used by Cowboy.

routes() = [{Host, Paths} | {Host, constraints(), Paths}]

Types:

  • Host = Path = '_' | iodata()
  • Paths = [{Path, Handler, Opts} | {Path, constraints(), Handler, Opts}]
  • Handler = module()
  • Opts = any()

Human readable list of routes mapping hosts and paths to handlers.

The syntax for routes is defined in the user guide.

tokens() = [binary()]

List of host_info and path_info tokens found during routing.

Exports

compile(Routes) -> Dispatch

Types:

  • Routes = routes()
  • Dispatch = dispatch_rules()

Compile the routes for use by Cowboy.

Navigation

See also

Version select