
13.07.2023, 16:07
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Описание: Удобный 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++:
[CODE]
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
Билдинг сообщений с нуля:
C++:
[CODE]
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
Репозиторий (Исходник):
GitHub - receiver1/http_message_handler
Contribute to receiver1/http_message_handler development by creating an account on GitHub.
github.com
|
|
|