Ich möchte basierend auf den Zugriffsrechten unterschiedliche Antworten auf dieselbe Frage für verschiedene Benutzer bereitstellen. Ich las diese Frage:Unterschiedliche REST-Ressourceninhalte basierend auf Benutzerzugriffsberechtigungen
Excluding private data in RESTful response
Aber ich bin nicht einverstanden mit der akzeptierten Antwort, die besagt, dass Sie sowohl /people.xml
und /unauthenticated/people.xml
bieten sollten, da mein Verständnis von REST ist, dass eine bestimmte Ressource in einem leben soll bestimmten Ort, nicht mehrere, je nachdem, wie viel von seinen Informationen Sie interessiert sind.
Das System, das ich entwerfe, ist noch komplizierter als das. Angenommen, ein Benutzer hat mehrere Freundeskreise erstellt und ihnen unterschiedliche Zugriffsrechte zugewiesen. Zum Beispiel könnte mein "Bekanntschaftskreis" Zugang zu meinem Geburtstag haben und mein "beruflicher" Kreis könnte Zugang zu meiner Beschäftigungsgeschichte haben, aber nicht umgekehrt. Um die Antwort aus der Frage, die ich erwähnt habe, anzuwenden, muss ich eine Möglichkeit haben, alle Kreise des Benutzers zu erhalten (was ich aus Sicherheitsgründen geheim halten möchte) und dann durch /circles/a/users/42
, /circles/b/users/42
, /circles/c/users/42
und so weiter gehen und dann die Ergebnisse zusammenführen, um die maximale Menge an verfügbaren Informationen anzuzeigen. Offensichtlich gibt es nicht unbedingt einen einzigen Kreis, der alle Informationen erhält, die andere Kreise bekommen. Ich glaube, das ist schwierig genug (beachten Sie, dass ich wahrscheinlich dies mit mehreren Arten von Objekten tun muss und dass zukünftige Versionen möglicherweise eine andere Prozedur erfordern), aber was ist, wenn ich Sicherheitsbeschränkungen für einen bestimmten Benutzer trotz die Tatsache auferlegen möchte dass er auch in einigen meiner Kreise ist? Kann dieses Problem überhaupt gelöst werden? Selbst wenn ich mich weigere, auf eine der oben genannten Fragen zu antworten und eine neue Frage zu stellen, die mir eine Antwort geben könnte, würde es dennoch die Tatsache offenbaren, dass dieser spezielle Benutzer aufgrund individueller Zugangsbeschränkungen anders behandelt wird.
Was fehlt mir hier? Ist es mir überhaupt möglich, einen RESTful Web Service zu entwickeln?
Wenn die Schlussfolgerung ist, dass das Verhalten nicht RESTful ist, würde dies immer noch eine Situation darstellen, in der es moralisch in Ordnung wäre, den REST-Vertrag zu brechen? Wenn ja, was sind die negativen Auswirkungen? Gehe ich zum Beispiel Gefahr, dass Proxy-Caching-Probleme auftreten?
Danke für Ihre Antwort! So wie ich es verstehe, möchte ich vielleicht die Hack-ee-Lösung wählen, wenn ich eine nicht triviale Menge von Elementen basierend auf komplexen Berechtigungen zurückgeben muss. Allerdings habe ich in meiner Frage Caching erwähnt. Um anzugeben: * Besteht die Gefahr, dass ein Caching-Proxy (oder Ähnliches) die gleiche Version des Objekts an Benutzer mit unterschiedlichen Berechtigungen verteilt? * Auch zum Caching *, wie kann ich dem Client mitteilen, dass sich eine Ressource aufgrund eines Politikänderung, * trotz eines unveränderten Zeitstempels? Nochmals vielen Dank für die Hilfe! –
@jeremyth schrieb: "Es sollte egal sein, was die URL für die Ressource ist, wie der Server es steuert". Für andere Leute, die hier enden, wird dieses Konzept als [HATEOAS] (http://en.wikipedia.org/wiki/HATEOAS) bezeichnet, was eine bestimmte Art von REST ist und nicht für alle REST-Konzepte gilt. – Wilt
@Wilt Der Ausdruck "Hypermedia als Motor des Anwendungszustands" wird wörtlich in Fieldings Dissertation verwendet.Wenn Sie also sagen "eine bestimmte Art von REST", was Sie wirklich meinen müssen, ist "die Art von REST, die von der Person beabsichtigt wurde, die den Begriff 'REST' erfunden hat." Es ist einer der Kernpunkte. –