di: Sandro Paganotti 24 Giugno 2008
Le applicazioni Web moderne spesso si trovano nella condizione di dover rispondere sia alle richieste che pervengono dai browser degli utenti (quindi nella maggior parte dei casi attraverso l'utilizzo di HTML), sia a quelle che arrivano da altre applicazioni Web.
Alcune tecniche utilizzate per gestire quest'ultima casistica riguardano l'utilizzo di protocolli come SOAP o XML-RPC che, pur essendo valide soluzioni al problema comportano il più delle volte la necessità di stendere una struttura applicativa dedicata a questi scenari.
Rails introduce in questo frangente una implementazione innovativa, mixando sapientemente il paradigma REST e la tecnologia XML per dar vita ad uno tra i più potenti mezzi di cui questo framework ci omaggia: ActiveResource.
Chiunque abbia mai sperimentato l'utilizzo del generatore scaffold non potrà non aver notato la porzione di codice che conclude ogni azione del controller creato. Per fare un esempio creiamo lo scaffold per un'ipotetica entita project:
ruby script/generate scaffold project name:string duedate:date description:text
dirigiamoci quindi verso il file projects_controller.rb ed esaminiamolo con un qualsiasi editor testuale, noteremo il seguente blocco di codice:
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @projects }
end
Queste poche righe racchiudono una funzionalità molto potente di Rails: la possibilità di variare il tipo di formattazione dell'informazione generata utilizzando come discriminante il formato (termine generico che delineerò nel prossimo paragrafo) con cui è stata formulata la richiesta.
In altre parole se cerchermo di accedere ahttp://localhost:3000/projects otterremo la canonica pagina che contraddistingue ogni indice di scaffold; ma se punteremo il nostro browser all'indirizzo http://localhost:3000/projects.xml il server ci risponderà con lo stesso contenuto informativo precedente, questa volta però formattato in XML.
ActiveResource utilizza l'XML prodotto in questo modo per consentirci di navigare all'interno di un model che non appartiene alla nostra applicazione; sfruttando sapientemente le convenzioni che sottendono url e verbi di un tipico controller RESTful esso può infatti darci le stesse possibilità che sperimentiamo giornalmente con ActiveRecord.
Guida ActiveSupportUna panoramica sulle funzionalità più importanti di ActiveSupport:... |
Guida Ruby On Rails 2Scoprire le novità di Ruby on Rails 2, memorizzare i dati con... |
Guida Ruby e il WebUn percorso alla scoperta delle potenzialità offerte da Ruby nella... |
Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .
Iscriviti alla newsletter