init(Req, _Opts) -> {cowboy_rest, Req, #state{}}.
REST is implemented in Cowboy as a sub protocol. The request is handled as a state machine with many optional callbacks describing the resource and modifying the machine’s behavior.
The REST handler is the recommended way to handle HTTP requests.
First, the init/2
callback is called. This callback is common
to all handlers. To use REST for the current request, this function
must return a cowboy_rest
tuple.
init(Req, _Opts) -> {cowboy_rest, Req, #state{}}.
Cowboy will then switch to the REST protocol and start executing the state machine.
After reaching the end of the flowchart, the terminate/3
callback
will be called if it is defined.
The REST component has code for handling the following HTTP methods: HEAD, GET, POST, PATCH, PUT, DELETE and OPTIONS.
Other methods can be accepted, however they have no specific callback defined for them at this time.
All callbacks are optional. Some may become mandatory depending on what other defined callbacks return. The various flowcharts in the next chapter should be a useful to determine which callbacks you need.
All callbacks take two arguments, the Req object and the State,
and return a three-element tuple of the form {Value, Req, State}
.
All callbacks can also return {stop, Req, State}
to stop execution
of the request.
The following table summarizes the callbacks and their default values. If the callback isn’t defined, then the default value will be used. Please look at the flowcharts to find out the result of each return value.
In the following table, "skip" means the callback is entirely skipped if it is undefined, moving directly to the next step. Similarly, "none" means there is no default value for this callback.
Callback name | Default value |
---|---|
allowed_methods |
|
allow_missing_post |
|
charsets_provided |
skip |
content_types_accepted |
none |
content_types_provided |
`$$[ |