Frage

Wie ich es verstehe, ein Hypertext-driven mit RESTful Web Service wird ein Client nicht wissen nichts über Server URI Layout außer für ein paar bekannten Einspeisepunkten soll. Dies soll den Server ermöglichen, ihren eigenen URI Raum zu kontrollieren und reduzieren Kopplung mit dem Kunden.

Wenn ein Client für den Dienst eine erfolgreiche Anforderung sendet kann eine neue Ressource, der Service reagiert 201 erzeugt und gibt den URI, an dem die neue Ressource zu schaffen, in dem Location-Header-Feld zugegriffen werden.

Wenn ein Client erlaubt werden, um diese URI zu speichern direkten Zugriff auf die Ressource in der Zukunft zu ermöglichen, und wenn ja, wie lange? Wenn URIs vom Client zwischengespeichert wird, scheint dies eine Situation der Einrichtung zu werden, in dem jedes Mal, wenn der Server sein URI Layout ändert, müssen sie sicherstellen, dass eine dauerhafte Umleitung bedient wird, wenn alte URIs zugegriffen werden. Andernfalls bricht der Kunde. Über mehrere Jahre könnte dieses System von Umleitungen aus der Hand.

Diese Situation würde nicht erscheinen, um den Server viel mehr Kontrolle über seinen URI Platz als ein REST-RPC-Hybrid-Ansatz unter Verwendung von URI-Vorlagen gegeben zu haben.

Es gibt eine Menge von Informationen über Caching-Darstellungen, aber was ist das Caching URIs in Hypertext-driven RESTful-Systemen?

War es hilfreich?

Lösung

Denken Sie daran,

als Tim Berners-Lee sagte: "cool URLs nicht ändern". einer eingefahrenen Dauerhaft Antwort bei der URI geändert und jemand bittet die alte Sobald der Server einen URI an den Client übergibt, ist es nun die Aufgabe des Servers durch (zum Beispiel) die URI arbeiten auch in Zukunft halten zu senden.

Das ist eigentlich das, was viele ermutigt undurchsichtig URIs zu entwerfen, wie auf Datenbank-IDs oder Zeitstempel basiert, anstatt einige Menschen lesbare Eigenschaft der Ressource in der URI. Alles, was die Menschen verstehen, wollen sie ändern.

Andere Tipps

Ja, der Kunde sollte die URI speichern darf. Denn solange es will. Als Licky ein Smart-Client eine fahrener dauerhaft Antwort zu aktualisieren ihre Lesezeichen verwenden können erwähnt werden.

Wenn man darüber nachdenkt, haben wir die bestmögliche Situation. Sie können die URLs auf dem Server ändern, während der Wahl noch so lange, alte Kunden zu unterstützen, wie wir wählen, und intelligente Kunden können Auto sich effektiv auf die neuen URLs aktualisieren.

Wie Sie lange wählen, um weiterhin die alten URLs zu unterstützen, ist wirklich eine Entscheidung, die auf Basis gestaltet werden muss auf den bestehenden Kunden und die Leichtigkeit, mit der sie gehalten werden.

Für mich ist dies eine enorme Verbesserung gegenüber der Versionierung Problemen mit RPC-Stil-Schnittstellen.

Ich weiß, dass dies eine alte Frage, aber ich denke, es gibt eine Subkomponente auf die Antworten, die ich hier sehe, die angesprochen wird nicht.

Denken Sie daran, dass Sie nicht die Ressource vom Server abrufen, aber Sie sind eine Darstellung einer Ressource abruft. Die Ressource selbst kann ihre primäre Kennung ändern oder rehomed werden, oder was auch immer, aber die Darstellung, die an den Client auf den Ressourcenerstellungs zurückgegeben wurde, kann (oder auch nicht) gültig unabhängig; es ist alles eine Frage der Situation.

Als Beispiel betrachten wir eine moderierte Inhalt Upload-System; ein Benutzer die Möglichkeit haben, können Inhalte für die Prüfung von den Moderatoren zu laden, die schließlich die Inhalte einem breiteren Publikum / Markt ausgesetzt sein führen kann. Bei der ersten Upload kann der Server mit einem URI reagieren, die auf (sagen wir) leitet „Benutzer / {userid} / hochgeladen / {contentid}“ für die Darstellung dieser Inhalte. An einem gewissen Punkt kann beschließen, die Moderatoren den Inhalt einer „Titelseite“ zu fördern; dass Darstellung des Inhalts kann dann bei der URI verfügbar seinem „content / {contentid}“; das sollte den ursprünglichen Uploader den Zugriff auf ihre Daten auf „Benutzer / {userid} / hochgeladen / {contentid}“ nicht verhindern; nichts sagt, dass es eine dauerhafte Umleitung sein muss, und in der Tat, es gibt gute Gründe für die es nicht zu sein; wenn der Benutzer entscheidet, dass sie den Inhalt entfernen möchten, sollten sie in der Lage sein, eine auf den Inhalt durchführen DELETE; es ist wahrscheinlich viel Vorzugs Benutzer DELETEs den Inhalt Darstellungen aus ihren eigenen „hochgeladen“ Standorte haben zu tun. Wenn jedoch die Bedingungen der Website zeigen, dass die Benutzerrechte zum Inhalt hochgeladen widerrufen werden (nicht selten), es könnte sinnvoll sein, den Mäßigung Förderung Prozess effektiv zu haben, um den Inhalt aus dem eigenen Bereich des Benutzers zu entfernen, was zu einem „dauerhaften Umzug“.

Es ist wirklich völlig abhängig von der spezifischen Situation; die Gültigkeit eines im Cache gespeicherten URI ist völlig abhängig von der Politik des Servers. Zumindest würde ich denken, dass ein Antrag auf eine ungültige URI (das möglicherweise vorher gegolten) sollte eine Antwort (in Übereinstimmung mit HATEOAS) verursacht, dass der Client ermöglichen, kann „neu entdecken“ die Ressource (Darstellung) sie suchen ; zumindest eine Verbindung zum Einstiegspunkt.

Da eines der Prinzipien von REST ist, dass die Ressourcen adressierbar sind, scheint es durchaus akzeptabel für ein Client-Spur der Adresse zu halten (URI) für eine bestimmte Ressource. Ressource URIs einer der „bekannten Einstiegspunkte“ sein sollten Sie bezeichnet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top