RESTinio — что это?

RESTinio — это header-only, кросс-платформенный инструмент для встраивания HTTP сервера с удобным express-like маршрутизатором и вебсокетами. Главной задачей RESTinio является упрощение асинхронной обработки запросов.

Что выделяет RESTinio?

Простота использования.
С первых дней мы взяли за правило, что все должно быть максимально понятно и по-возможности просто. Мы не терпим подходов, которые заставляют пользователя писать много лишнего кода. С RESTinio вы можете сконцентрироваться на написании вашего приложения.
Express-like маршрутизатор.
Нужно создать нетривиальное REST API со множеством маршрутов, в которых к тому же заключены параметры? Просто возьмите RESTinio с express-like маршрутизатором, который создан по мотивам известного js-фреймворка.
Производительность и масштабируемость.
RESTinio привносит незначительные накладные расходы на обработку запросов и предоставляет ряд настроек для увеличение производительности. RESTinio полностью асинхронный, а значит ответ можно отправлять когда дынные для него будут готовы, при этом блокировать нить сервера на это время не нужно, что позволяет повысить пропускную способность вашего сервера. Кроме того при использовании однопоточного сервера RESTinio можно настроить так, чтобы он не использовал внутренней синхронизации и сделать накладные расходы в таком случае еще меньшими.
Настраиваемость.
RESTinio имеет ряд параметров, определяющих детали его работы. Хотите -- можете использовать собственный логгер для внутренних событий RESTinio. Или, быть может, хотите сами определять работу с таймаутами. С RESTinio все это возможно.
Open-source.
RESTinio распространяется под лицензией BSD-3-CLAUSE, которая дает все преимущества открытого программного обеспечения.

Как выглядит код использующий RESTinio?

Вот как будет выглядеть простейший http-сервер, который отвечает на все запросы hello-world сообщением:

#include <restinio/all.hpp>

int main()
{
   restinio::run(
      restinio::on_this_thread()
         .port(8080)
         .address("localhost")
         .request_handler([](auto req) {
            return req->create_response().set_body("Hello, World!").done();
         }));

   return 0;
}

Где взять RESTinio?

Репозиторий RESTinio живет на github.

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