首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ REST ("Casablanca")中的URI编码

C++ REST ("Casablanca")中的URI编码
EN

Stack Overflow用户
提问于 2016-04-01 19:26:23
回答 1查看 2.6K关注 0票数 2

我正在使用C++ REST SDK 2.8的http侦听器,并注意到以下内容。如果我向此侦听器发送以下URL:

代码语言:javascript
复制
http://my_server/my%2fpath?key=xxx%26yyy%3Dzzz

我知道:

代码语言:javascript
复制
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包含两个元素"my“、"path”和m_query_components包含2对("key“、"xxx")、("yyy”、"zzz")。

我想要并期望的是v_path_components包含一个元素"my/path",m_query_components包含一个对("key","xxx&yyy=zzz")。

为了实现后者,relative_uri不应该对uri进行解码/编码,因为这会丢失信息。此外,应该在拆分结果上而不是在拆分之前执行web::uri::decode()。但是,由于REST本身以及它附带的许多示例都以上述方式使用,这使我相信我可能错了。

有人能证实我的发现或者解释我为什么走错路了吗?

EN

回答 1

Stack Overflow用户

发布于 2017-01-14 01:48:31

你的发现是有道理的。

由于您首先解码,然后编码的符号和(%3D)成为一个键/值对分隔符。路径组件也是如此。斜杠(%2f)成为路径分隔符,并被解析为路径分隔符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36364375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档