Ich bin dabei, eine Reihe von Web-Apps von Grund auf neu zu erstellen. ( Eine Übersicht finden Sie unter http://50pop.com/code .) Ich möchte, dass sie von vielen verschiedenen Clients aus aufgerufen werden können: Front-End-Websites, Smartphone-Apps, Backend-Webservices usw. Ich möchte also wirklich eine JSON REST API für jede.
Außerdem arbeite ich lieber am Back-End, daher träume ich davon, mich ausschließlich auf die API zu konzentrieren und jemanden einzustellen, der die Front-End-Benutzeroberfläche erstellt, egal ob es sich um eine Website, ein iPhone, Android oder eine andere App handelt.
Bitte helfen Sie mir bei der Entscheidung, welchen Ansatz ich wählen soll:
ZUSAMMEN IN SCHIENEN
Erstellen Sie eine sehr standardmäßige Rails-Web-App. Führen Sie im Controller den Schalter reply_with aus, um entweder JSON oder HTML bereitzustellen. Die JSON-Antwort ist dann meine API.
Pro: Viele Präzedenzfälle. Tolle Standards und viele Beispiele dafür, wie man Dinge auf diese Weise macht.
Con: Die API muss nicht unbedingt mit der Web-App identisch sein. Ich mag es nicht, wenn / dann mit dem Switch-Ansatz antworten. Mischen von zwei sehr unterschiedlichen Dingen (UI + API).
REST SERVER + JAVASCRIPT-HEAVY CLIENT
Erstellen Sie einen Nur-JSON-REST-API-Server. Verwenden Sie Backbone oder Ember.js für clientseitiges JavaScript, um direkt auf die API zuzugreifen und Vorlagen im Browser anzuzeigen.
Pro: Ich liebe die Trennung von API und Client. Kluge Leute sagen, dies sei der richtige Weg. Theoretisch großartig. Scheint topaktuell und aufregend.
Con: Nicht viel Präzedenzfall. Nicht viele Beispiele dafür sind gut gemacht. Öffentliche Beispiele (twitter.com) fühlen sich träge und wenden sich sogar von diesem Ansatz ab.
REST SERVER + SERVER-SIDE HTML CLIENT
Erstellen Sie einen Nur-JSON-REST-API-Server. Erstellen Sie einen einfachen HTML-Website-Client, der nur auf die REST-API zugreift. Weniger clientseitiges JavaScript.
Pro: Ich liebe die Trennung von API und Client. Das Bereitstellen von einfachem HTML5 ist jedoch kinderleicht und nicht clientintensiv.
Con: Nicht viel Präzedenzfall. Nicht viele Beispiele dafür sind gut gemacht. Frameworks unterstützen dies ebenfalls nicht. Ich bin mir nicht sicher, wie ich es angehen soll.
Besonders auf der Suche nach Ratschlägen aus Erfahrung, nicht nur theoretisch.