SinglePageApplication und API-Backend: Verständnisfrage
Hans
- php
1 molily
Hi,
momentan betreibe ich eine Webseite im "herkömmlichen" Stil. PHP holt Daten das der Datenbank und gerneriert darus den HTML-Code. Auf meiner Startseite habe ich z.B. 3 Tabellen.
Da ich mit dem Gedanken spiele eine SinglePageApplication zu erstellen und ggf. auch Daten für eine HandyApp abzugreifen, möchte ich die Sache in ein Backend und verschiedene Frotends splitten. Auf die Daten wird dann meinet wegen über verschiedene Endpoints zugegriffen. Z.B.:
GET http://api.domain.de/table/1
GET http://api.domain.de/table/2
GET http://api.domain.de/table/3
POST http://api.domain.de/login
POST http://api.domain.de/board/save
Soweit ist das ja auch kein Problem. Aber bis jetzt habe ich z.B. für die Startseite mit seinen 3 Tabellen einen Request benötigt, der HTML-Code wird generiert und ausgeliefert. Fertig.
Wenn jetzt die SPA geladen wurde wären ja 3 weitere Requests notwendig um die Daten für die 3 Tabellen zu holen und ggf. noch mehr um sagen wir mal die Online-User anzeigen zulassen. Macht das denn alles noch Sinn wenn "unfassbar" viele Requests geniert werden müssen? Sich einfach "alles" auf einmal zu holen, verfehlt ja dann auch irgendwie den Sinn des API-Backends, oder?
Gruß Hans
Hallo,
APIs baut man, um bestimmten Clients bestimmte Daten in einem bestimmten Format zur Verfügung zu stellen. Zwar sind Ressourcen-basierte APIs üblich, aber es spricht nichts dagegen, eine API bereitzustellen, die mehrere Ressourcen in einem Request bereitstellt. Es gibt natürlich Gründe, warum das nicht die Regel ist und warum man einzelne Ressourcen verwendet.
Übrigens kann eine Ressource auch eine Liste an Datensätzen zurückgeben, z.B. GET /tables.
Es besteht die Möglichkeit, das gesamte oder gewisses HTML der ersten Seite serverseitig gerendert werden. Das ist in einer Single-Page-App nicht ausgeschlossen, sondern aus verschiedenen Gründen sinnvoll, z.B. Performance und Zugänglichkeit/Kompatibilität.
Eine weitere Möglichkeit, um den Start einer SPA zu beschleunigen, ist as Einbetten der nötigen Daten als JSON im HTML. Das JavaScript liest das JSON dann aus dem DOM, nicht von einem Remote-Web-Service.
Grüße,
Mathias