Ключи запроса закодированы в URL-адресе URLComponent - PullRequest
0 голосов
/ 29 мая 2020

Я использую URLQueryItem для кодирования значений запроса, но когда я передаю запросы к URLComponent в свойствах url, ключи запроса также кодируются.

var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false)
urlComponents.queryItems = [URLQueryItem]()
for (key,value) in parameters {
    let queryItem = URLQueryItem(name: key,
                                 value: "\(value)".addingPercentEncoding(withAllowedCharacters: .urlHostAllowed))
    urlComponents.queryItems?.append(queryItem)
}
print("URLComponents Query Items:\n \(urlComponents.queryItems)")
print("URLComponents URL:\n \(urlComponents.url)")

Результат:

URLComponents Query Items:
 Optional([per_page=10, filters[status]=Active])
URLComponents URL:
 Optional(https://example.com/endpoint?per_page=10&filters%5Bstatus%5D=Active)

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

1 Ответ

0 голосов
/ 29 мая 2020

Удалите явный вызов .addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) - URLQueryItem позаботится о кодировке.

...