2015-11-19 4 views
4

Как правильно разобрать URI запроса (серверной стороны) на C++?Как правильно разобрать URI в Касабланке

URI, определяется как в Casablanca Documentation как: протокол

: // сервер [: порт]/путь? запрос # фрагмент

Позволяет сказать, я хочу путь (со всеми элементами) в виде списка и запросов как список пар ключ/значение, так

http://server/foo/bar?val1=1&val2=yo

бы результат

std::list<string> path; 
path.push_back("foo"); 
path.push_back("bar"); 

std::list<std::pair<string, string>> query; 
query.push_back(std::make_pair("val1", "1")); 
query.push_back(std::make_pair("val2", "yo")); 

Я хочу, чтобы не разбираться в себе, как предлагалось elsewhere, в основном для мобильности и производительности.

cpp-netlib все еще не part of boost, и я бы предпочел не вводить новую библиотеку.

У Casablanca есть объект URI, но я не могу найти разбор или итераторы.

Есть ли способ решить эту проблему, используя только boost, C++, casablanca/cpprestsdk?

ответ

7

Кажется, что в URI-классе есть статические вспомогательные функции, например. uri::split_query и uri::split_path, которые выполняются точно в соответствии с запросами.

я нашел ссылки на них после того, как смотреть на this gist, который использует

auto http_get_vars = uri::split_query(request.request_uri().query()); 
Смежные вопросы