REST - Was genau ist unter Uniform Interface zu verstehen?
Einheitliche Schnittstelle
Die einheitliche Schnittstellenbeschränkung ist für den Entwurf eines REST-Dienstes von grundlegender Bedeutung. [14] Die einheitliche Oberfläche vereinfacht und entkoppelt die Architektur, sodass sich jedes Teil unabhängig entwickeln kann. Die vier Leitprinzipien dieser Schnittstelle sind:
Identifizierung von Ressourcen
Einzelne Ressourcen werden in Anforderungen identifiziert, beispielsweise mithilfe von URIs in webbasierten REST-Systemen. Die Ressourcen selbst sind konzeptionell von den Darstellungen getrennt, die an den Client zurückgegeben werden. Beispielsweise kann der Server Daten aus seiner Datenbank als HTML, XML oder JSON senden, von denen keine die interne Darstellung des Servers darstellt, und es handelt sich unabhängig davon um dieselbe Ressource.
Manipulation von Ressourcen durch diese Darstellungen
Wenn ein Client eine Darstellung einer Ressource enthält, einschließlich angehängter Metadaten, verfügt er über genügend Informationen, um die Ressource zu ändern oder zu löschen.
Selbstbeschreibende Nachrichten
Jede Nachricht enthält genügend Informationen, um die Verarbeitung der Nachricht zu beschreiben. Beispielsweise kann der aufzurufende Parser durch einen Internet-Medientyp (früher als MIME-Typ bezeichnet) angegeben werden. Die Antworten geben auch ausdrücklich ihre Cachefähigkeit an.
Hypermedien als Motor des Anwendungszustands (A.K.A. HATEOAS)
Clients machen Zustandsübergänge nur durch Aktionen, die vom Server dynamisch in Hypermedien identifiziert werden (z. B. durch Hyperlinks im Hypertext). Mit Ausnahme einfacher fester Einstiegspunkte für die Anwendung geht ein Client nicht davon aus, dass eine bestimmte Aktion für bestimmte Ressourcen verfügbar ist, die über die in zuvor vom Server empfangenen Darstellungen beschriebenen Ressourcen hinausgehen.
Ich höre einen Vortrag zu diesem Thema und der Vortragende hat gesagt:
"Wenn jemand auf unsere API zugreift und Sie in der Lage sind, ein Kundenobjekt abzurufen und wissen, dass es Auftragsobjekte gibt, sollten Sie in der Lage sein, Auftragsobjekte mit demselben Muster abzurufen, von dem Sie die Kundenobjekte erhalten haben. Diese URIs sind werden wie einander aussehen. "
Das kommt mir falsch vor. Es geht nicht so sehr darum, wie die URIs aussehen oder wie sie konsistent sind, sondern vielmehr darum, wie die URIs verwendet werden (Identifizieren von Ressourcen, Manipulieren der Ressourcen durch Repräsentationen, selbstbeschreibende Nachrichten und Hateoas).
Ich glaube nicht, dass Uniform Interface das überhaupt bedeutet. Was genau bedeutet das?