A way of incorporation of additional (extra) data into a request object
added. See Extra-data in request object for more details.
A simple way of chaining synchronous request-handlers (somewhat similar to ExpressJS’s middleware). See Chains of synchronous handlers for more details.
0.6.12
A new method incoming_http_msg_limits added to
restinio::server_settings_t. This method allows to set up limits for
maximum length of various parts of an incoming HTTP message (like URL,
HTTP-field’s name and value).
A support for SObjectizer 5.6/5.7 has been added. Now RESTinio can be user
either with SObjectizer 5.5 and SObjectizer 5.6/5.7. The version of
SObjectizer is detected automatically. But if a user wants to use
SObjectizer 5.6/5.7 he/she should set C++ standard to C++17 manually.
0.6.11
Conversion functions passed to restinio::easy_parser::convert can
now return expected_t<T,error_reason_t> as well as just T.
Returning expected_t<T,error_reason_t> allows to report conversion
errors without throwing an exception.
A new overload for restinio::server_settings_t::address() method.
The new overload accepts an instance of asio::ip::address.
A new optional hook added. This hook is called just after a succesful
return from bind() for server’s acceptor. A reference to
asio::ip::tcp::acceptor is passed to that hook. This new hook
can be used for application-specific tuning of bound acceptor or to
gathering some information about the acceptor.
0.6.10
A TLS-context object can be passed to server_settings_t as a shared
pointer. This makes it possible to use one TLS-context by several instances
of RESTinio server, or TLS-context can be shared between a RESTinio server
and other parts of an application.
0.6.9
Support for Asio 1.17. Version 0.6.9 can be used with Asio 1.12, 1.14, 1.16
and 1.17.
Support for incoming requests with chunked encoding. Previous versions of
RESTinio didn’t support such requests, an HTTP 501 error was returned. Since
v.0.6.9 RESTinio accepts such requests and glues all chunks together into one
body. Information about an individual chunk is preserved and is available via
request_t::chunked_input_info.
A new way of handling CMake’s RESTINIO_ALLOW_SOBJECTIZER=OFF and
introduction of RESTINIO_USE_EXTERNAL_SOBJECTIZER option.
New methods for http_header_fields_t class: remove_all_of and
add_field;
New helpers for parsing the following HTTP-fields: Connection, Host,
Transfer-Encoding;
New tools for easy_parser and HTTP-field parsers: expected_token_p, expected_caseless_token_p, symbol_from_range_p, caseless_exact, caseless_exact_p.
0.6.8
Fix for implementation of try_extract_params for Bearer
authentification.
New helpers for extraction of parameters for Bearer authentification.
0.6.7
New RESTINIO_USE_EXTERNAL_EXPECTED_LITE, RESTINIO_USE_EXTERNAL_OPTIONAL_LITE, RESTINIO_USE_EXTERNAL_STRING_VIEW_LITE, RESTINIO_USE_EXTERNAL_VARIANT_LITE options for CMake-based builds.
New helpers for working with HTTP-fields like Authorization and
Proxy-Authorization and extraction of parameters for Basic
authentification. See details: Authorization helpers.
Some functions that works with query-string and URI (like parse_query, try_parse_query) now do basic control of validity of UTF-8 sequences represented as percent-encoded characters.
New RESTINIO_USE_EXTERNAL_HTTP_PARSER option for CMake-based builds.
0.6.4
Several fixes, including very important one for (#72).
Fix for an unhandled exception during accepting a new connection (#68).
Support for fmt::basic_memory_buffer<char,1> in restinio::writable_item_t (#66). NOTE. Because of that addition RESTinio v.0.6.3 requires fmt-6.1.0 or newer.
0.6.2
Fix the behavior of the express router for the case when some
symbols from unreserved character set are percent-encoded in path part
of a URI.
For example, when path is /%7euser instead of /~user.
Parsers for Accept-Charset, Accept-Encoding, Accept-Language and Range
HTTP-fields.
Fix: usage of CreateFileA on Windows instead of CreateFile.
Fix: sendfile operation on Windows closes the file twice.
Fix: tracking beacon in URL wasn’t handled properly.
Fix: sendfile operation on Windows opens a file in exclusive mode.
Semicolon is now supported as parameters separator in URI.
Support for “web beacon” and query_string_params_t::tag() method.
Function parse_query is a template now, special trait types
restinio::parse_query_traits::restinio_defaults and
restinio::parse_query_traits::javascript_compatible.
Add support for header fields in Provisional Message Header Field Names (from here).
Introduce safer interface for http_header_field_t using getters/setters. This involves a little incompatibility with prior versions if previously data members were accessed directly because now they a private.
Add base_response_builder_t::append_header(http_header_field_thttp_header_field) header field setter.
Enhance sendfile_t with file meta information (see File meta).
Add restinio::make_date_field_value() functions to format Date header fields (e.g. Fri,15Jun201813:58:18GMT).
Introduce restinio::http_status_line_t and a bunch of accompanying stuff, so now a standard response code and reason phrase can be set easily (see Status line).
Express router: route DSL. Update route to regex processing in order to stick with path-to-regexp project.
Express router: route params using string_view. Getting rid of using strings for storing parameters keys and values in route_params_t and using string_view (std::string_view if available).
Express router: route params casting. Introducing functions for converting route parameters to a specific type if the conversion is available (Casting parameters).
Express router: non matched request handler. A handler for non matched request can be set (Non matched request handler).
Express router: benchmark. Add a benchmark for testing performance on a given set of routes (described in file).
Improve query string params. Parsed parameters stored as string_view objects, thus requiring less space and less allocations.
Add cmake support for SObjectizer. Test and samples that depend on SObjectizer included to cmake scripts.
Add benchmarks. Add restinio benchmarks to repository.
Timer manager concept. Redesign timers. Introduce a concept of timer manager, that substitutes former timer factory concept.
0.3.0
Running server simplification. Add functions to deal with boilerplate code to run the server in simple cases.
Improve internal design. Redesign server start/stop logic.
Web Sockets. Basic support for Web Sockets.
Acceptor options. Custom options for socket can be set in settings.
Separate accept and create connection. Creating connection instance that involves allocations and initialization can be done in a context that is independent to acceptors context.
Concurrent accept. Server can accept several client connections concurrently.
Add uri helpers. A number of functions to work with query string see uri_helpers.hpp.
0.2.2
Improve header fields API. Type/enum support for known header fields and their values.
TLS support. Sopport for HTTPS with OpenSSL.
External buffers. Support external (constant) buffers support for body and/or body parts.
0.2.1
Routers for message handlers. Support for a URI dependent routing to a set of handlers (express-like router).
Bind localhost aliases. Accept “localhost” and “ip6-localhost” as address parameter for server to bound to.
0.2.0
Chunked transfer encoding. Support for chunked transfer encoding. Separate responses on header and body chunks, so it will be possible to send header and then body divided on chunks.
HTTP pipelining. HTTP pipelining support. Read, parse and call a handler for incoming requests independently. When responses become available send them to client in order of corresponding requests.
0.1.0
Address binding. Bind server to specific ip address.
Timeout control. Enable timeout guards for operations of receiving request (read and parse complete request), handling request, write response.
Logging. Support for logging of internal server work.
ASIO thread pool. Support ASIO running on a thread pool.