Мы выпустили RESTinio 0.5.0!
2019.06.04
В этой версии добавлена возможность работы RESTinio с кастомизированными версиями библиотеки http-parser. Это позволяет реализовать обработку в RESTinio нестандартных HTTP-методов.
Допустим, что следует написать REST-сервис, который должен реагировать на нестандартные методы ENCODE и DECODE. Для этого потребуется:
- сделать форк http-parser, в котором реализуется распознавание методов ENCODE и DECODE (в результате чего в кастомизированном http-parser появляются значения HTTP_ENCODE и HTTP_DECODE);
- определить в своем коде две константы типа restinio::http_method_id_t:
constexpr const restinio::http_method_id_t http_encode{HTTP_ENCODE, "ENCODE"}; constexpr const restinio::http_method_id_t http_decode{HTTP_DECODE, "DECODE"};
- определить собственный тип, внутри которого должен быть единственный статический метод from_nodejs следующего вида:
struct my_http_mehods_mapping { inline static constexpr restinio::http_method_id_t from_nodejs(int method_code) noexcept { switch(method_code) { case HTTP_ENCODE: return http_encode; case HTTP_DECODE: return http_decode; default: return restinio::default_http_methods_t::from_nodejs(method_code); } } };
- указать имя собственного типа с методом from_nodejs в свойствах HTTP-сервера:
struct my_server_traits : public restinio::default_traits_t { using http_methods_mapper_t = my_http_methods_mapping; };
После этого можно будет использовать константы http_encode и http_decode при работе с RESTinio, например:
auto make_request_handler() { auto router = std::make_unique< restinio::router::express_router_t<> >(); router->add_handler(http_encode, "/data", [](auto req, auto params) {...}); router->add_handler(http_decode, "/data", [](auto req, auto params) {...}); ... return router; }
Примечание. Для реализации этой функциональности из RESTinio был удален тип http_method_t, а вместо него введен тип http_method_id_t. Если в вашем коде использовался http_method_t, то при обновлении на v.0.5.0 вам придется внести изменения в свой код.
Также в версии 0.5.0 был удален ряд вещей, которые были помечены как "deprecated" в предыдущих версиях RESTinio.
Основной репозиторий RESTinio находится на bitbucket (есть github зеркало).
Архивы зафиксированных версий находятся в download section.
Документация находится здесь.
Также доступна Doxygen документация: RESTinio-0.5 API Reference.
Если вам чего-то не хватает в RESTinio и вы хотели бы увидеть в RESTinio нужную вам функциональность, то можете написать нам об этом на info@stiffstream.com.