aboutsummaryrefslogblamecommitdiffstats
path: root/manual/cowboy_http_handler.md
blob: 9d283e762d3f5607439a6c5084bf04e56ec72c71 (plain) (tree)
























































                                                                    
cowboy_http_handler
===================

The `cowboy_http_handler` behaviour defines the interface used
by plain HTTP handlers.

Unless noted otherwise, the callbacks will be executed sequentially.

Types
-----

None.

Callbacks
---------

### init({TransportName, ProtocolName}, Req, Opts)
	-> {ok, Req, State} | {shutdown, Req, State}

> Types:
>  *  TransportName = tcp | ssl | atom()
>  *  ProtocolName = http | atom()
>  *  Req = cowboy_req:req()
>  *  Opts = any()
>  *  State = any()
>
> Initialize the state for this request.
>
> The `shutdown` return value can be used to skip the `handle/2`
> call entirely.

### handle(Req, State) -> {ok, Req, State}

> Types:
>  *  Req = cowboy_req:req()
>  *  State = any()
>
> Handle the request.
>
> This callback is where the request is handled and a response
> should be sent. If a response is not sent, Cowboy will send
> a `204 No Content` response automatically.

### terminate(Reason, Req, State) -> ok

> Types:
>  *  Reason = {normal, shutdown} | {error, atom()}
>  *  Req = cowboy_req:req()
>  *  State = any()
>
> Perform any necessary cleanup of the state.
>
> This callback should release any resource currently in use,
> clear any active timer and reset the process to its original
> state, as it might be reused for future requests sent on the
> same connection. Typical plain HTTP handlers rarely need to
> use it.