2012-04-17 12 views
6

Facendo clic su un pulsante in un modulo, verrà inviata una richiesta POST che verrà gestita dal seguente codice.Come fare una richiesta POST all'interno del codice 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 

Come posso inviare un'altra richiesta POST a un sito Web diverso dal codice Ruby?

risposta

9

Utilizzare Net::HTTP dalla Ruby Standard Library o HTTParty gem.

+0

Come posso inviare più parametri insieme alla richiesta di post utilizzando Net :: HTTP? – Takkun

+0

@Takkun Questo è mostrato nella riga 13 dell'esempio collegato. –

+0

Fare attenzione a richiedere da un altro sito durante l'elaborazione per la richiesta di un cliente. Se quel secondo sito ha qualche ritardo, il tuo cliente lo vedrà e incolperà il tuo codice, server o sito. Invece di farlo durante la richiesta, provare a farlo in anticipo se possibile e memorizzare nella cache il risultato o memorizzare i metadati in un database locale in cui può essere rapidamente restituito al chiamante. Esistono numerosi [client HTTP per Ruby] (https://www.ruby-toolbox.com/categories/http_clients) che possono essere utilizzati per questo. –

Problemi correlati