12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- ::: Hooks
- Hooks allow the user to customize Cowboy's behavior during specific
- operations.
- :: Onresponse
- The `onresponse` hook is called right before sending the response
- to the socket. It can be used for the purposes of logging responses,
- or for modifying the response headers or body. The best example is
- providing custom error pages.
- Note that this function MUST NOT crash. Cowboy may or may not send a
- reply if this function crashes. If a reply is sent, the hook MUST
- explicitly provide all headers that are needed.
- You can specify the `onresponse` hook when creating the listener.
- ``` erlang
- cowboy:start_http(my_http_listener, 100,
- [{port, 8080}],
- [
- {env, [{dispatch, Dispatch}]},
- {onresponse, fun ?MODULE:custom_404_hook/4}
- ]
- ).
- ```
- The following hook function will provide a custom body for 404 errors
- when it has not been provided before, and will let Cowboy proceed with
- the default response otherwise.
- ``` erlang
- custom_404_hook(404, Headers, <<>>, Req) ->
- Body = <<"404 Not Found.">>,
- Headers2 = lists:keyreplace(<<"content-length">>, 1, Headers,
- {<<"content-length">>, integer_to_list(byte_size(Body))}),
- cowboy_req:reply(404, Headers2, Body, Req);
- custom_404_hook(_, _, _, Req) ->
- Req.
- ```
- Again, make sure to always return the last request object obtained.
|