Мы выпустили 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.