Мы выпустили RESTinio 0.6.6!

2020.04.14

В этой версии добавлен экспериментальный и безопасный по типам роутер запросов, который может использоваться вместо express-роутера.

Этот новый easy_parser_router позволяет описывать маршруты вот в таком виде:

namespace epr = restinio::router::easy_parser_router;
router->http_get(
   epr::path_to_params("/api/v1/posts/",
      epr::non_negative_decimal_number_p<std::uint64_t>(),
      "/revisions/",
      epr::non_negative_decimal_number_p<std::int16_t>()),
   [](const auto & req, std::uint64_t post_id, std::int16_t rev_id) {...});

Этот же маршрут для express-роутера записывался бы вот в таком виде:

router->http_get("/api/v1/posts/:post_id(\d{1,10})/revisions/:rev_id(\d{1,5})",
   [](const auto & req, const auto & params) {
      const auto post_id = restinio::cast_to<std::uint64_t>(params["post_id"]);
      const auto rev_id = restinio::cast_to<std::int16_t>(params["rev_id"]);
      ...
   });

Новый easy_parser_router позволяет полагаться на проверки времени компиляции, что препятствует возникновению ошибок, которым подвержен express-роутер.

Добавлена возможность задать один обработчик сразу для нескольких HTTP-методов при обращении к одному ресурсу:

router->add_handler(
   restinio::router::any_of_methods(
      restinio::http_method_lock(), restinio::http_method_unlock()),
   "/api/v1/resources/:rid",
   [](const auto & req, const auto & params) {...});

router->add_handler(
   restinio::router::none_of_methods(
      restinio::http_method_get(), restinio::http_method_post(), restinio::http_method_delete()),
   "/api/v1/users/:user",
   [](const auto & req, const auto & params) {...});

Эти новые method-matcher-ы могут использоваться как с express-, так и с easy_parser роутерами.

Добавлена новая опция для CMake с именем RESTINIO_FMT_HEADER_ONLY. С ее помощью можно указывать, должна ли fmtlib использоваться в виде header-only или же скомпилированной библиотеки.

Новая версия RESTinio доступна в основном репозитории на github, а так же через системы управления зависимостями vcpkg и conan.

Документация находится здесь.

Также доступна Doxygen документация: RESTinio-0.6 API Reference.

Если вам чего-то не хватает в RESTinio и вы хотели бы увидеть в RESTinio нужную вам функциональность, то можете сообщить нам об этом через Issues на github или Google-группу, либо же написав на info@stiffstream.com. Вы так же можете заказать у нас доработку RESTinio под свои нужды.