Я использую http-прослушиватель C++ REST SDK 2.8 и заметил следующее. Если я отправить следующий URL для этого приемника:URI-кодировка в C++ REST SDK («Casablanca»)
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 элемента [ "мой", "путь"], и m_query_components содержит 2 пары [(«ключ», «xxx»), («yyy», «zzz»)].
То, что я хочу, и ожидал бы это v_path_components содержит 1 элемент [ "мой/путь"], и m_query_components содержит 1 пар [("ключ", "ххх & его = ZZZ")] ,
Для достижения последнего relative_uri не должен декодировать/кодировать uri, поскольку это теряет информацию. Кроме того, web :: uri :: decode() должен выполняться по результатам разделения, а не перед расщеплением. Но, поскольку сам REST SDK, а также множество образцов, поставляемых вместе с ним, используют это выше, это заставляет меня думать, что я могу ошибаться.
Может ли кто-нибудь подтвердить мои выводы или объяснить, почему я нахожусь на неправильном пути?