Описание: Удобный C++ враппер, парсер и билдер для HTTP сообщений. Использует библиотеку http-parser для парсинга. Я устанавливал через vcpkg, вы можете собрать сами. Работа с net::http::response аналогична работе с net::http::request. Если в запросе не будет тела, то спарсятся только start line + заголовки. Можно использовать вместе с http_url_handler. В этой библиотеке есть 4 класса:
Парсинг сообщений:
Билдинг сообщений с нуля:
Репозиторий (Исходник):
- net::http::request - отвечает за парсинг и билдинг запросов,
- net::http::response - отвечает за парсинг и билдинг ответов,
- net::http::headers_body - класс нужен только для наследования, содержит работу с заголовками и телом запроса,
- net::http::message_parser - отвечает только за парсинг запросов и ответов, минимально использует память,
Парсинг сообщений:
C++:
std::string request_str{R"(GET /path HTTP/1.1
Content-Length: 16
Content-Type: application/json
User-Agent: test-user-agent
{"key": "value"})"}; // Записываем HTTP сообщение в строку
net::http::request request{request_str}; // Парсим сообщение в качестве запроса
std::cout << request.str() << std::endl; // Билдим сообщение и выводим
Билдинг сообщений с нуля:
C++:
std::string body{R"({"key": "value"})"}; // Записываем тело в строку
net::http::request request{}; // Создаём пустой объект
request.version("1.1"); // Заполняем объект значениями
request.method(net::http::method::GET);
request.target("/path");
request.headers(
net::http::headers_t{{"Content-Length", std::to_string(body.size())},
{"Content-Type", "applicaton/json"},
{"User-Agent", "test-user-agent"}});
request.body({body.begin(), body.end()});
std::cout << request.str() << std::endl; // Билдим сообщение и выводим
Репозиторий (Исходник):
GitHub - receiver1/http_message_handler
Contribute to receiver1/http_message_handler development by creating an account on GitHub.
github.com
Последнее редактирование: