RESTist ein Architekturstil und ein Design für netzwerkbasierte Softwarearchitekturen.
RESTKonzepte werden als Ressourcen bezeichnet. Eine Darstellung einer Ressource muss zustandslos sein. Es wird über einen Medientyp dargestellt. Einige Beispiele für Medientypen umfassen XML, JSONund RDF. Ressourcen werden von Komponenten manipuliert. Komponenten fordern Ressourcen an und bearbeiten sie über eine einheitliche Standardschnittstelle. Im Fall von HTTP, diese Schnittstelle besteht aus Standard - HTTP - ops zB GET, PUT, POST, DELETE.
RESTwird in der Regel verwendet HTTP, hauptsächlich aufgrund der Einfachheit von HTTP und seiner sehr natürlichen Zuordnung zu RESTful-Prinzipien. REST ist jedoch nicht an ein bestimmtes Protokoll gebunden.
Grundlegende REST-Prinzipien
Client-Server-Kommunikation
Client-Server-Architekturen weisen eine sehr unterschiedliche Trennung von Bedenken auf. Alle im RESTful-Stil erstellten Anwendungen müssen grundsätzlich auch Client-Server sein.
Staatenlos
Für jede Clientanforderung an den Server muss der Status vollständig dargestellt werden. Der Server muss in der Lage sein, die Clientanforderung vollständig zu verstehen, ohne einen Serverkontext oder einen Serversitzungsstatus zu verwenden. Daraus folgt, dass der gesamte Status auf dem Client beibehalten werden muss. Wir werden später auf die staatenlose Darstellung näher eingehen.
Cacheable
Cache-Einschränkungen können verwendet werden, sodass Antwortdaten als zwischenspeicherbar oder nicht zwischenspeicherbar markiert werden können. Alle als zwischenspeicherbar gekennzeichneten Daten können als Antwort auf dieselbe nachfolgende Anforderung wiederverwendet werden.
Einheitliche Schnittstelle
Alle Komponenten müssen über eine einzige einheitliche Schnittstelle interagieren. Da die gesamte Komponenteninteraktion über diese Schnittstelle erfolgt, ist die Interaktion mit verschiedenen Diensten sehr einfach. Die Schnittstelle ist die gleiche! Dies bedeutet auch, dass Implementierungsänderungen isoliert vorgenommen werden können. Solche Änderungen wirken sich nicht auf die grundlegende Komponenteninteraktion aus, da die einheitliche Schnittstelle immer unverändert bleibt. Ein Nachteil ist, dass Sie mit der Schnittstelle stecken bleiben. Wenn durch Ändern der Schnittstelle eine Optimierung für einen bestimmten Dienst bereitgestellt werden könnte, haben Sie kein Glück, da REST dies verbietet. Positiv zu vermerken ist jedoch, dass REST für das Web optimiert ist, weshalb REST über HTTP unglaublich beliebt ist!
Die obigen Konzepte stellen definierende Merkmale von REST dar und unterscheiden die REST-Architektur von anderen Architekturen wie Webdiensten. Es ist nützlich zu beachten, dass ein REST-Service ein Web-Service ist, ein Web-Service jedoch nicht unbedingt ein REST-Service.
Sehen Sie dieses Blog Post auf REST Design - Principals für weitere Details über REST und die oben genannten Grundsätze.