2010-08-18 6 views
0

Y at-il un moyen de manipuler un URI dans Ruby pour accepter les paramètres sans l'utilisation de ? et &?Ruby URI Manipulation

Par exemple, je veux faire ce qui suit:

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

au lieu de

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

Pour renvoyer des informations pour un appareil donné. Cela utiliserait une interface entièrement basée sur REST.

exemple de code:

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 

En utilisant cette URL: http://localhost:5000/a/b Dans ce qui précède, la sortie de req pour une URL donnée serait:

GET /a/b HTTP/1.1

Dans 'req', comment peut un aller à propos de la manipulation de l'URI?

Merci d'avance.

+0

Utilisez-vous Rails, Rack ou autre chose pour gérer la demande http? –

+0

Oui, WEBrick gère toutes les demandes http entrantes. – Yazdaan

Répondre

1

Le routage est ce que vous cherchez. À partir des documents pour routing at api.rubyonrails.org

Les routes peuvent générer de jolies URL. Par exemple:

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

La modification de ce un peu que vous êtes tous ensemble pour ips et les ports.

Utilisation de l'itinéraire ci-dessus, l'URL "localhost: 3000/articles/2005/11/06" cartes à

params = {:year => '2005', :month => '11', :day => '06'} 
+0

Cela semble très bien. Je vais regarder plus loin. Je vous remercie! – Yazdaan

1

Vous devriez essayer sinatra, il est un repos très léger concentré calque haut de la baie, avec ce que vous pourriez faire:

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

    "IP: #{ip} PORT: #{port}" 
end 
+0

Ce serait génial, mais malheureusement, je travaille avec un service qui est en cours de développement sur Rails depuis un certain temps. Merci quand même! – Yazdaan