Wir entwickeln eine REST-API, die unter anderem von einem HTML5-Frontend via Javascript genutzt werden soll. Die Anwendung ist für die Verwendung in der Organisation vorgesehen und hat normalerweise etwa 300 Benutzer. Wir möchten jedoch eine Skalierung auf etwa 1000 Benutzer vornehmen.
Normalerweise werden Verbindungen zur API innerhalb des LAN hergestellt, sodass die Qualität und die Latenz der Verbindung gut sind. Es ist jedoch nicht ausgeschlossen, dass gelegentlich Verbindungen über das Internet langsamer und mit mehr Verzögerung über 3G / 4G hergestellt werden.
Die zwei Optionen, die wir dachten, sind:
Das Frontend ruft mehrere gleichzeitig asynchrone API-Aufrufe auf, um die verschiedenen Komponenten der Schnittstelle zu laden.
- Vorteile: Einfachheit.
- Nachteile: Mehr Verbindungen zum Server.
Der Controller des Frontends ruft einmalig die API auf und übergibt als Parameter, welche Objekte abgerufen werden müssen.
- Vorteile: Nur eine Verbindung zum Server, obwohl der Server mehrere Verbindungen zur Datenbank herstellt.
- Nachteile: Erfordert Mechanismen sowohl im Frontend als auch in der API. Es erschwert das Design.
Weitere Erklärungen: Es gibt verschiedene Ressourcen ... / Produkt ... / Standorte usw. Diese Ressourcen könnten alleine abgerufen werden, aber es gibt eine andere abstrakte Ressource ... / Bildschirm? Produkt & Standorte, die beide in einem Aufruf abrufen.
/screen?Product&Locations
ist ein schlechter Ansatz, zumindest mit all der Erfahrung, die ich mit der Entwicklung von REST-APIs und einer Web-App gesammelt habe , die sie verwendet hat. Aus einer rein monolithischen Perspektive (z. B. in Ruby on Rails) ist es vollkommen in Ordnung , eine Route zu haben/screen
, die beidesProduct
undLocation
Ressourcen belastet . Aus REST- Sicht sollten Sie jedoch niemals mehr als eine Route laden (es sei denn, Sie verbinden Tabellen, um mehr Daten auf einmal zu erhalten). Was/screen
tun soll , ist eine grundlegende Layout - Seite laden und Sie AJAX API , die Daten zu erhalten (Product
,Location
usw.)./screen
AJAXHTTP GET
für/products/popular
und/locations
). Ihre API sollte nicht diejenige sein, die mehrere Ladevorgänge ausführt, da es unwahrscheinlich ist, dass Sie die Daten in einer Web-App auf dieselbe Weise wie beispielsweise in Android anzeigen.