Ruby URI Manipulation - PullRequest
       10

Ruby URI Manipulation

0 голосов
/ 19 августа 2010

Есть ли способ манипулировать URI в Ruby для приема параметров без использования ? и &?

Например, я хочу сделать следующее:

http://localhost:5000/service/get/ip/port

вместо

http://localhost:5000/service?ip=192.168.1.1&port=1

Для возврата информации о данном устройстве. Это будет использовать полностью основанный на REST интерфейс.

пример кода:

hello_proc = lambda do |req,res|
  res['Content-Type'] = "text/html"
  res.body = %{
     <html><body>
      Hello. You are calling from a #{req['User-Agent']}
      <p>
      I see parameters: #{req.query.keys.join(', ')}
     </body></html>
  }
end

Используя этот URL: http://localhost:5000/a/b В приведенном выше выводе req для данного URL будет:

GET /a/b HTTP/1.1

В 'req', как можно обрабатывать URI?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Вы должны попробовать sinatra, это очень легкий REST-ориентированный слой поверх стойки, с которым вы можете сделать:

get '/service/get/:ip/:port' do |ip, port|
  content_type "text/html"

  "IP: #{ip} PORT: #{port}"
end
1 голос
/ 19 августа 2010

Маршрутизация - это то, что вы ищете.Из документов для маршрутизации на api.rubyonrails.org

Маршруты могут генерировать красивые URL-адреса.Например:

map.connect 'articles/:year/:month/:day',
            :controller => 'articles',
            :action     => 'find_by_date',
            :year       => /\d{4}/,
            :month      => /\d{1,2}/,
            :day        => /\d{1,2}/

Немного изменив это, вы все настроили для ips и портов.

Используя маршрут выше, URL "localhost: 3000/ Articles / 2005/11/06 "карты

params = {:year => '2005', :month => '11', :day => '06'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...