如何在卡萨布兰卡优雅地解析URI
How to parse an URI elegantly in Casablanca
如何在C++中优雅地解析请求(服务器端)的URI?
URI在卡萨布兰卡文档中定义为:
protocol://server[:port]/path?查询#碎片
比方说,我希望路径(包含所有元素)作为一个列表,查询作为键/值对的列表,这样
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"));
我想避免像其他地方建议的那样自己进行解析,主要是出于可移植性和性能的原因。
cpp-netlib似乎还不是boost的一部分,我不想引入新的库。
Casablanca有一个URI对象,但我找不到任何解析或迭代器。
有没有办法只使用boost、c++、casablanca/cpprestsdk来解决这个问题?
URI类中似乎存在静态帮助器函数,例如URI::split_query和URI::split_path,它们的执行完全符合请求。
我在看了这个使用的要点后发现了它们的参考文献
auto http_get_vars = uri::split_query(request.request_uri().query());
相关文章:
- 在卡萨布兰卡形成编码参数的列表
- 在 win32 服务中生成卡萨布兰卡http_listener的问题 (C++)
- 卡萨布兰卡test_runner失败,并显示 std::bad_alloc
- 使用卡萨布兰卡(C++ REST SDK)的许可条款是什么?
- http_listener 卡萨布兰卡不绑定公共方法
- 添加卡萨布兰卡依赖项 VS2017
- 卡萨布兰卡 C++ REST SDK 中的 web::json::value::p arse 和 web::json::
- 在卡萨布兰卡实现多个 API
- 如何使用卡萨布兰卡在现有的web::json::value对象中附加新的键值对?
- 使用 c++ 卡萨布兰卡设置多个侦听器
- 使用 C++ REST SDK (卡萨布兰卡) 从文件中读取 JSON
- 如何在拥有 bost POST 数据和标头数据的同时与卡萨布兰卡执行 API 调用
- 如何在卡萨布兰卡 REST API 中检索授权标头
- C++ 卡萨布兰卡 vs Mozilla NSPR vs Facebook 愚蠢
- 如何在卡萨布兰卡优雅地解析URI
- 卡萨布兰卡与boost 1.56失败,由于-Werror
- 无法从JSON中获取值在卡萨布兰卡,c++
- 我遇到的问题与卡萨布兰卡c++时,使用https在它的url
- 如何使用卡萨布兰卡 (PPL) http_client返回的 XmlLite 处理 XML
- 当将卡萨布兰卡代码集成到现有的c++解决方案中时,Memcpy异常