w Pythonie, mogę to zrobić:nawrócony rubin hash do zapytań URL ciąg ... bez tych nawiasach kwadratowych
>>> import urlparse, urllib
>>> q = urlparse.parse_qsl("a=b&a=c&d=e")
>>> urllib.urlencode(q)
'a=b&a=c&d=e'
w Ruby [+ Rails] Nie mogę dowiedzieć się, jak zrobić to samo bez "przetaczania się", co wydaje się dziwne. Szyny sposób nie działa na mnie - dodaje nawiasów kwadratowych do nazw parametrów zapytania, które serwer na drugim końcu może lub nie może wspierać:
>> q = CGI.parse("a=b&a=c&d=e")
=> {"a"=>["b", "c"], "d"=>["e"]}
>> q.to_params
=> "a[]=b&a[]=c&d[]=e"
Moje przypadek użycia jest po prostu, że ja chcesz spłukać wartości niektórych wartości w części adresu URL. Wydawało się naturalne, aby oprzeć się na standardowej biblioteki i/lub szyn i napisać coś takiego:
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)
ale tylko jeśli otrzymany URI jest w rzeczywistości, a nie http://example.com/foo?a=b&a=c&a=d
http://example.com/foo?a[]=b&a[]=c&a[]=d
. Czy istnieje poprawny lub lepszy sposób na zrobienie tego?
ja widziałem http://bit.ly/gc2Ylj, co skłoniło mnie do szybko napisać https://gist.github.com/774142, co ja myślę * * realizuje co Chcę. Chociaż chciałem, żeby nie * przeturlać się. :-) – Charlie