2012-04-17 20 views
6

Al hacer clic en un botón en un formulario, se enviará una solicitud POST para que sea manejada por el siguiente fragmento de código.¿Cómo hacer una solicitud POST dentro del código Sinatra?

post '/register' do 
    #send post request to http://www.randomsite.com 
    #parse response 
    #do something with it 
    @user = User.first(:name => params['regUsername']) 
    if @user == nil 
    @user = User.create(
    :name   => params['regUsername'], 
    :pass   => Password.create(params['regPassword']), 
    :email  => params['regEmail'], 
    :created_date => Time.now 
    ) 
    redirect '/' 
    else 
    "User already exists." 
    end 
end 

¿Cómo puedo enviar otra solicitud POST a un sitio web diferente desde el código de Ruby?

Respuesta

9

Use Net::HTTP de la Biblioteca estándar de Ruby o la gema HTTParty.

+0

¿Cómo puedo enviar varios parámetros junto con la solicitud posterior usando Net :: HTTP? – Takkun

+0

@Takkun Esto se muestra en la línea 13 del ejemplo vinculado. –

+0

Tenga cuidado solicitando a otro sitio durante el procesamiento para la solicitud de un cliente. Si ese segundo sitio tiene algún retraso, su cliente lo verá y le echará la culpa a su código, servidor o sitio. En lugar de hacerlo durante la solicitud, intente hacerlo con anticipación, si es posible, y guarde en caché el resultado o almacene los metadatos en una base de datos local, donde se pueden devolver rápidamente a la persona que llama. Hay una serie de [clientes HTTP para Ruby] (https://www.ruby-toolbox.com/categories/http_clients) que se pueden usar para esto. –

Cuestiones relacionadas