ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   http_message_handler (Parser & builder for HTTP's) (https://forum.antichat.xyz/showthread.php?t=1482667)

Receiver 13.07.2023 16:07

Описание: Удобный C++ враппер, парсер и билдер для HTTP сообщений. Использует библиотеку http-parser для парсинга. Я устанавливал через vcpkg, вы можете собрать сами. Работа с net::http::response аналогична работе с net::http::request. Если в запросе не будет тела, то спарсятся только start line + заголовки. Можно использовать вместе с http_url_handler. В этой библиотеке есть 4 класса:
  1. net::http::request - отвечает за парсинг и билдинг запросов,
  2. net::http::response - отвечает за парсинг и билдинг ответов,
  3. net::http::headers_body - класс нужен только для наследования, содержит работу с заголовками и телом запроса,
  4. 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


Время: 10:32