Однако он обрабатывает только простые хеши.

hon я могу сделать это:

>>> import urlparse, urllib
>>> q = urlparse.parse_qsl("a=b&a=c&d=e")
>>> urllib.urlencode(q)
'a=b&a=c&d=e'

В Ruby [+ Rails] я не могу понять, как сделать то же самое, не «катаясь самостоятельно», что кажется странным. Способ Rails не работает для меня - он добавляет квадратные скобки к именам параметров запроса, которые сервер на другом конце может поддерживать или не поддерживать:

>> q = CGI.parse("a=b&a=c&d=e")
=> {"a"=>["b", "c"], "d"=>["e"]}
>> q.to_params
=> "a[]=b&a[]=c&d[]=e"

Мой вариант использования просто, что я хотел бы заглянуть со значениями некоторых значений вquery-string часть URL. Казалось естественным опираться на стандартную библиотеку и / или Rails и написать что-то вроде этого:

uri = URI.parse("http://example.com/foo?a=b&a=c&d=e")
q = CGI.parse(uri.query)
q.delete("d")
q["a"] << "d"
uri.query = q.to_params # should be to_param or to_query instead?
puts Net::HTTP.get_response(uri)

но только если результирующий URI на самом делеhttp://example.com/foo?a=b&a=c&a=d, и нетhttp://example.com/foo?a[]=b&a[]=c&a[]=d, Есть ли правильный или лучший способ сделать это?

Ответы на вопрос(5)

Ваш ответ на вопрос