RESTinio-0.4

2017.12.27

Рады представить очередной релиз RESTinio. RESTinio — это header-only, кросс-платформенная библиотека для встраивания HTTP сервера в С++ приложение, которая также включает в себя удобный express-like маршрутизатор и поддерживает websocket-ы.

Список изменений:

  • Переделан механизм контроля таймаутов, теперь расходы на контроль таймаутов практически не сказываются на производительности.
  • Express router: введена концепция regex-engine, которая позволяет использовать в качестве движка различные имплементации регулярных выражения (кроме std, например, PCRE/PCRE2).Например можно использовать библиотеку PCRE.
        using router_t = restinio::router::express_router_t< restinio::router::pcre_regex_engine_t >;
    
          auto router = std::make_unique< router_t >();
    
          router->http_get(
            "/:id(\d{8})/:tag",
            []( auto req, auto params ){
              // Handle request.
            } );
    
          // Add more routes ...
  • Express router: добавлены функции для конвертации значений параметров в нужный пользователю тип (если такая конвертация возможна).
  • Express router: параметры маршрута (route_params_t) теперь представляются в виде string_view.
  • Express router: обновлен алгоритм парсинга маршрутов, чтобы соответствовать проекту path-to-regexp
  • Express router: добавлена возможность установить обработчик для запросов, для которых не было найдено маршрута.
  • Express router: добавлен бенчмарк для работы маршрутизатора на заданном наборе маршрутов (задаются в файле), что позволяет быстро оценить расходы на работу маршрутизатора на данном наборе маршрутов (подробнее тут).
  • Улучшение разбора query string. Результаты хранятся в виде string_view объектов, требуя меньше памяти и аллокаций.
  • Добавлены бенчмарки для серверов с одним обработчиком.
  • Добавлена поддержка cmake для тестов и примеров, завязанных на SObjectizer.
  • Документация переместилась сюда.