Receiver
11.07.2023, 18:29
Описание: Удобный C++ враппер, парсер и билдер для URL-ссылок. Использует библиотеку http-parser (https://github.com/nodejs/http-parser) для парсинга. Я устанавливал через vcpkg, вы можете собрать сами. В нём есть 2 класса: net::http::url - отвечает за парсинг и билдинг ссылок и net::http::url_parser - отвечает только за парсинг, минимально использует память.
Парсинг ссылок:
C++:
net
::
http
::
url url
{
"https://user@host:8080/path?query=value#fragment"
}
;
// Парсим ссылку (только в этом конструкторе к работе подключается парсер)
std
::
cout
Билдинг ссылок с нуля:
C++:
[CODE]
net
::
http
::
url url
{
}
;
// Создаём пустой объект
url
.
schema
(
"https"
)
;
// Заполняем этот объект
url
.
user_info
(
"user"
)
;
url
.
host
(
"host"
)
;
url
.
port
(
8080
)
;
url
.
path
(
"/path"
)
;
url
.
query
(
"query=value"
)
;
url
.
fragment
(
"fragment"
)
;
std
::
cout
Парсинг URL запроса:
C++:
[CODE]
auto
query
=
net
::
http
::
parse_query
(
url
.
query
(
)
)
;
// Парсим URL запрос, возвращает std::map
for
(
auto
&
[
key
,
value
]
:
query
)
{
// ...
}
Репозиторий (Исходник):
GitHub - Receiver1/http_url_handler (https://github.com/Receiver1/http_url_handler)
Contribute to Receiver1/http_url_handler development by creating an account on GitHub.
github.com
Парсинг ссылок:
C++:
net
::
http
::
url url
{
"https://user@host:8080/path?query=value#fragment"
}
;
// Парсим ссылку (только в этом конструкторе к работе подключается парсер)
std
::
cout
Билдинг ссылок с нуля:
C++:
[CODE]
net
::
http
::
url url
{
}
;
// Создаём пустой объект
url
.
schema
(
"https"
)
;
// Заполняем этот объект
url
.
user_info
(
"user"
)
;
url
.
host
(
"host"
)
;
url
.
port
(
8080
)
;
url
.
path
(
"/path"
)
;
url
.
query
(
"query=value"
)
;
url
.
fragment
(
"fragment"
)
;
std
::
cout
Парсинг URL запроса:
C++:
[CODE]
auto
query
=
net
::
http
::
parse_query
(
url
.
query
(
)
)
;
// Парсим URL запрос, возвращает std::map
for
(
auto
&
[
key
,
value
]
:
query
)
{
// ...
}
Репозиторий (Исходник):
GitHub - Receiver1/http_url_handler (https://github.com/Receiver1/http_url_handler)
Contribute to Receiver1/http_url_handler development by creating an account on GitHub.
github.com