Estou prestes a criar um monte de aplicativos da web a partir do zero. (Veja http://50pop.com/code para obter uma visão geral.) Gostaria que eles pudessem ser acessados de muitos clientes diferentes: sites front-end, aplicativos para smartphones, serviços da web de back-end, etc. Então, eu realmente quero um API JSON REST para cada um.
Além disso, eu prefiro trabalhar no back-end, então sonho em manter meu foco exclusivamente na API e contratar outra pessoa para criar a interface do usuário front-end, seja um site, iPhone, Android ou outro aplicativo.
Por favor, ajude-me a decidir qual abordagem devo adotar:
JUNTOS NOS TRILHOS
Crie um aplicativo da web Rails muito padrão. No controlador, faça a opção respond_with, para servir JSON ou HTML. A resposta JSON é então minha API.
Pro: Muitos precedentes. Grandes padrões e muitos exemplos de como fazer as coisas dessa maneira.
Contras: não necessariamente quer que a API seja igual ao aplicativo da web. Não goste se / então respon_with alternar abordagem. Misturando duas coisas muito diferentes (UI + API).
SERVIDOR DE DESCANSO + CLIENTE JAVASCRIPT-PESADO
Crie um servidor API REST somente JSON. Use Backbone ou Ember.js para JavaScript do cliente para acessar a API diretamente, exibindo modelos no navegador.
Pro: Adoro a separação entre API e cliente. Pessoas inteligentes dizem que este é o caminho a percorrer. Ótimo em teoria. Parece de ponta e emocionante.
Con: Não há muito precedente. Não há muitos exemplos disso bem-sucedidos. Os exemplos públicos (twitter.com) parecem lentos e até estão se afastando dessa abordagem.
SERVIDOR REST + CLIENTE HTML DO LADO DO SERVIDOR
Crie um servidor API REST somente JSON. Crie um cliente de site HTML básico, que acesse apenas a API REST. Menos JavaScript do lado do cliente.
Pro: Adoro a separação entre API e cliente. Mas servir HTML5 simples é bastante infalível e não exige muito cliente.
Con: Não há muito precedente. Não há muitos exemplos disso bem-sucedidos. Estruturas também não suportam isso. Não tenho certeza de como abordá-lo.
Especialmente procurando conselhos da experiência, não apenas na teoria.