Mein Verständnis von REST ermöglicht das Modellieren von Serviceoperationen als Darstellung des Status und Übergang von einem Status zu einem anderen unter Verwendung von HTTP. Ich habe Ressourcen bis vor kurzem immer als Repräsentationen des Service-Side-State verstanden, als ich diesen Artikel von Jimmy Bogard las, von dem ich weiß, dass er ein kluger Entwickler / Architekt ist, der von der Community sehr geschätzt wird. Um eine bestimmte Aussage aus diesem Beitrag zu zitieren
Die Darstellung ist etwas anders - sie beschreibt den aktuellen Status der Ressource (auf Anfrage).
Das hat mich verwirrt. Was ist die allgemein akzeptierte Meinung zu diesem Thema?
rest
api
api-design
Suhas
quelle
quelle
Antworten:
Kurze Antwort
Längere Antwort - wie bei allem REST ist der Ausgangspunkt die These von Roy Fielding ; insbesondere Kapitel 5 . Für Ihre aktuelle Frage möchten Sie Abschnitt 5.2.1.
Ressource
Darstellung
Also: "Das heutige Wetter in Los Angeles" ist eine Ressource. Zu den Kandidatenvertretungen gehören: ein Textdokument mit der neuesten Vorhersage des nationalen Wetterdienstes; eine visuelle Darstellung des Wetterradars und eine Audioaufzeichnung der Vorhersage.
quelle
Eine Ressource ist das, mit dem Sie arbeiten. Wenn Sie beispielsweise eine API zum Schalten einer bestimmten Lampe haben, ist die Ressource die Lampe selbst. Eine Ressource kann physisch (z. B. Lampe, Person) oder nicht physisch (z. B. Artikel, Rolle, Zeile in der Datenbank) sein. Eine Ressource kann primär (z. B. Kontostand) oder abgeleitet (z. B. Transaktion) sein. Eine Ressource kann sich auf eine bestimmte Entität beziehen (z. B. die fünfte in dieser Lampenfassung installierte Lampe) oder auf eine Rolle, die zu unterschiedlichen Zeiten einer anderen Entität zugeordnet ist (z. B. die aktuell installierte Lampe, die am 5. August 2008 installierte Lampe). oder es kann mehreren Entitäten zugeordnet werden (z. B. allen Lampen im Haus).
Die Darstellung einer Ressource ist die Art und Weise, wie Ihr Dienst den Status der Ressource kommuniziert, z. B. XML, JSON, das den Status der Lampe darstellt.
In der REST-API wird eine Ressource durch eine einheitliche Kennung (z. B. URI) identifiziert. Eine einzelne Ressource kann mehrere Darstellungen haben. In der HTTP-REST-API geben Sie normalerweise die Darstellung an, die Sie in den Headern HTTP Content-Type und Accept verwenden möchten.
Eine wichtige Erkenntnis in der Client-Server-Architektur ist, dass Sie die Ressource nicht zum Client bringen können und nicht versuchen sollten, sie so zu gestalten, wie Sie es tun. Stattdessen können Sie in der REST-API eine Ressource remote bearbeiten, indem Sie Darstellungen der Ressource übertragen. Stellen Sie sich das so vor, Sie führen die Lampe nicht mit FedEx aus, damit der Client die Lampe direkt manipulieren kann, sondern der Dienst erstellt eine XML / JSON / protobuf / CSV-Darstellung der Lampe und der Client sendet eine Darstellung der beabsichtigten Manipulationen. Der Dienst manipuliert dann den tatsächlichen Status der Lampe im Namen des Clients oder lehnt die Anforderung ab, beispielsweise wenn der Client nicht berechtigt ist, die Vorgänge an der Lampe auszuführen. Dies mag offensichtlich erscheinen / Haare spalten, aber das Wichtigste ist, dass, da die Darstellung nicht die Ressource selbst ist,
quelle
Eine Ressource kann eine Rechnung sein.
Eine Darstellung ist eine Rechnung zu einem bestimmten Zeitpunkt im JSON-Format oder im XML-Format. Möglicherweise erhalten Sie zu einem späteren Zeitpunkt genau dieselbe Rechnung. Es handelt sich um dieselbe Ressource, jedoch in einem möglicherweise anderen Status (storniert, bezahlt usw.).
Sie nehmen den aktuellen Status der Rechnung (z. B. alle Rechnungsdaten in der Datenbank) und geben ihr zu einem bestimmten Zeitpunkt eine bestimmte Darstellung (z. B. HTML, XML, JSON), um sie auf ein anderes Gerät zu übertragen (z. B.:: ein Browser)
quelle