HTTP REST request (GET) da un server rails

Scusate la domanda banale,

devo fare una HTTP request da un server rails, so che esiste net/http,
ma ho visto che attualmente ci sono librerie di piu’ alto livello
(hhtpclient?) voi cosa consigliate?

Il server deve permettere all’utente di mandare una request asincrona ad
un server esterno (una google app).

Scusate ancora la domanda banale. :slight_smile:

Davide

Imho dipende quello che devi fare.

Se non devi supportare basic auth e non ti serve ssl cosa c’e’ di male
in net/http?

Io uso HTTParty per tutto.

Il giorno 04/set/2012, alle ore 11:33, Matteo L.
[email protected] ha scritto:

A me piace molto RestClient.

Curiosit: cosa intendi per richiesta asincrona in questo caso?

Si, scusate la mia pessima terminologia.

Spiegazione “a modo mio”:

  1. l’utente compila un form
  2. l’utente manda una request ad un server esterno con le info del form.
    Server esterno: http://cloud4cancer.appspot.com/
  3. una bella rotopalla che gira.
  4. on response: do la classificazione (Maligno/Benigno)
  5. L’utente salva la scheda

Per inciso:

questo e’ un progetto pilota per un “classificatore” di breast cancer
che sfrutta un classificatore a rete neurale sviluppato da una ragazzina
di 17 anni (invidia!)

Il suo classificatore sembra classificare correttamente il 99% dei casi
(che cazzo!)

Non vi prometto niente, ma se riesco a convincere che il progetto e’
valido potrei coinvolgere uno studente che abbia voglia di fare una tesi
in Rails

Ciao e grazie per le info!

Allora, da quello che ho capito la richiesta asincrona nel browser
(ovviamente), ma non detto che debba esserlo anche sul server.

Non buona prassi, ma se il servizio molto veloce puoi fare una
chiamata sincrona nel controller se si tratta di una demo da fare
velocemente.

In passato ho usato HTTParty per cose del genere. E’ notevole per la
semplicit di utilizzo.

Altrimenti hai due possibilit:

  • delayed job o redis o altro e polling ajax alla risorsa per vedere
    quando ha finito (background job).
  • avventurarti in un web server evented tipo goliath o eventmachine e
    mantenere la connessione aperta con il servizio esterno durante la
    chiamata. (evented server)

Generalmente uso unicorn quindi non sono esperto di webserver tipo
eventmachine.

Se sai come scrivere codice thread safe dai una occhiata a sidekiq che
usa i thread e evita che gli workers ti si mangino tutte le risorse.

-f

Se il form deve essere inviato direttamente al servizio esterno, hai
provato con un form asincrono? Dipende da come risponde il servizio
altrimenti dovresti richiamarlo dal tuo server come hai descritto tu, io
ho provato GitHub - nahi/httpclient: 'httpclient' gives something like the functionality of libwww-perl (LWP) in Ruby. senza dubbio più comodo
che usare direttamente la libreria integrata in ruby
Ciao