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.