Как мне разобрать часть запроса URI в Ruby 1.8? - PullRequest
3 голосов
/ 30 июля 2011

В Ruby 1.8, используя стандартную библиотеку URI, я могу анализировать

http://au.easyroommate.com/content/common/listing_detail.aspx?code=H123456789012&from=L123456789012345

, используя URI.split, чтобы получить

["http", nil, "au.easyroommate.com", nil, nil,
"/content/common/listing_detail.aspx", nil, 
"code=H123456789012&from=L123456789012345", nil]

Но возможно ли получить H123456789012бит из части запроса без использования моей собственной хакерской атаки (например, расщепление по & и затем получение бита, соответствующего /code.(.*)/?

Ответы [ 2 ]

3 голосов
/ 30 июля 2011

Вы можете использовать Rack::Utils, у которого есть метод с именем parse_nested_query, который вы можете передать в строке запроса из URL:

Rack::Utils.parse_nested_query(uri.query_string)

Затем будет возвращен объект Hash, представляющий строку запроса, позволяющую вам получить доступ к code.

3 голосов
/ 30 июля 2011

Вы ищете CGI :: parse метод

params = CGI::parse("query_string")
  # {"name1" => ["value1", "value2", ...],
  #  "name2" => ["value1", "value2", ...], ... }
...