1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- = 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:
- [source,erlang]
- ----
- 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.
- // @todo No need to return the Req when stopping. Fix in 3.0.
- == Types
- === env()
- [source,erlang]
- ----
- 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
- link:man:cowboy(7)[cowboy(7)]
|