【发布时间】:2016-04-01 19:26:23
【问题描述】:
我正在使用C++ REST SDK 2.8 的http 侦听器并注意到以下内容。如果我将以下 URL 发送到此侦听器:
http://my_server/my%2fpath?key=xxx%26yyy%3Dzzz
我愿意:
auto uri = request.relative_uri();
auto v_path_components = web::uri::split_path(web::uri::decode(uri.path()));
auto m_query_components = web::uri::split_query(web::uri::decode(uri.query()));
然后我发现 v_path_components 包含 2 个元素 ["my", "path"],而 m_query_components 包含 2 对 [("key","xxx") , ("yyy","zzz")].
我想要并且期望的是 v_path_components 包含 1 个元素 ["my/path"],m_query_components 包含 1 对 [("key", "xxx&yyy=zzz")]。
为了实现后者,relative_uri 不应解码/编码 uri,因为这会丢失信息。此外,web::uri::decode() 应该在拆分结果上执行,而不是在拆分之前执行。但是,由于 REST SDK 本身以及它附带的许多示例都以上述方式使用它,这让我相信我可能错了。
谁能证实我的发现或解释为什么我走错了路?
【问题讨论】:
标签: c++ rest sdk casablanca