Sto per creare un sacco di app Web da zero. (Vedi http://50pop.com/code per una panoramica.) Vorrei che potessero avere accesso a molti client diversi: siti Web front-end, app per smartphone, servizi web back-end, ecc. Quindi voglio davvero un API REST JSON per ognuno.
Inoltre, preferisco lavorare sul back-end, quindi sogno ad occhi aperti di concentrarmi esclusivamente sull'API e assumere qualcun altro per creare l'interfaccia utente front-end, che sia un sito Web, un iPhone, un dispositivo Android o un'altra app.
Aiutatemi a decidere quale approccio dovrei adottare:
INSIEME NELLE RAIL
Crea un'app Web Rails molto standard. Nel controller, esegui l'opzione respond_with per servire JSON o HTML. La risposta JSON è quindi la mia API.
Pro: un sacco di precedenti. Grandi standard e molti esempi di fare le cose in questo modo.
Contro: Non necessariamente l'API deve essere uguale all'app Web. Non mi piace se / then reply_with switch approccio. Mescolando due cose molto diverse (UI + API).
REST SERVER + CLIENTE PESANTE JAVASCRIPT
Creare un server API REST solo JSON. Utilizzare Backbone o Ember.js per JavaScript lato client per accedere direttamente all'API, visualizzando i modelli nel browser.
Pro: Adoro la separazione di API e client. Le persone intelligenti dicono che questa è la strada da percorrere. Ottimo in teoria. Sembra all'avanguardia ed eccitante.
Contro: non molto precedente. Non molti esempi di questo fatto bene. Gli esempi pubblici (twitter.com) sembrano lenti e stanno addirittura abbandonando questo approccio.
REST SERVER + CLIENT HTML LATO SERVER
Creare un server API REST solo JSON. Crea un client per siti Web HTML di base, che accede solo all'API REST. Meno JavaScript sul lato client.
Pro: Adoro la separazione di API e client. Ma servire il semplice HTML5 è abbastanza infallibile e non intensivo per il cliente.
Contro: non molto precedente. Non molti esempi di questo fatto bene. Anche i frame non supportano questo. Non sono sicuro di come affrontarlo.
Soprattutto in cerca di consigli dall'esperienza, non solo in teoria.