cowboy_middleware(3)

NAME

cowboy_middleware - Middlewares

DESCRIPTION

The module cowboy_middleware defines a callback interface for Cowboy middlewares.

Middlewares process the request sequentially in the order they are configured.

CALLBACKS

Middlewares implement the following interface:

    execute(Req, Env)
        -> {ok, Req, Env}
         | {suspend, module(), atom(), [any()]}
         | {stop, Req}

    Req :: cowboy_req:req()
    Env :: cowboy_middleware:env()

The execute/2 is the only callback that needs to be implemented. It must execute the middleware and return with instructions for Cowboy.

ok
    Cowboy should continue processing the request using the returned Req object and environment.

suspend
    Cowboy will hibernate the process. When resuming, Cowboy will apply the returned module, function and arguments.

stop
    Cowboy will stop middleware execution. No other middleware will be executed. This effectively ends the processing of the request.

TYPES

  env()
    env() :: #{atom() => any()}

Middleware environment.

A new environment is created for every request. The initial environment contained the user configured environment values (like dispatch for example) plus the listener value which contains the name of the listener for this connection.

Middlewares may modify the environment as necessary.

CHANGELOG
    • 2.0: The env type is now a map instead of a proplist.
    • 1.0: Behavior introduced.

SEE ALSO

cowboy(7)