Request handler
In general request handler is a function-object receiving exactly one parameter: request handle. The function signature of the handler must be:
restinio::request_handling_status_t
handler( restinio::request_handle_t req );
Each request handler receives a handle on a conrete request.
restinio::request_handle_t
is a alias for std::shared_ptr<restinio::request_t>
.
req
parameters is passed by value and thus can be passed to
another processing flow (that is where an async handling becomes possible).
Handler must return handling status via request_handling_status_t
enum.
If the handler does handle request it must return accepted
value.
If handler refuses to handle request it must return rejected
.
There are two helper functions: restinio::request_accepted()
and
restinio::request_rejected()
for refering an itemes of the enum.
Default request handler used in traits is the following.
using default_request_handler_t =
std::function<request_handling_status_t (request_handle_t)>;
Request structure
Let’s have a look at a very important object – restinio::request_t
.
It brings all the data of a given HTTP request and some internal
stuff to make response mechanism work.
There are two major data pieces of request: request header and request body.
Request header can be accesed by request_t::header()
function
which returns a reference to restinio::http_request_header_t
object.
Refer to Working with http headers section for more detail on a header.
Body can be accesed by request_t::body()
function which returns
a reference to std::string
.