Chcę podać różne odpowiedzi na to samo pytanie dla różnych użytkowników, w oparciu o prawa dostępu. Czytam to pytanie:Różne zasoby zasobów REST oparte na uprawnieniach przeglądania użytkownika
Excluding private data in RESTful response
Ale nie zgadzam się z przyjętą odpowiedzi, w którym stwierdza, że należy zapewnić zarówno /people.xml
i /unauthenticated/people.xml
, gdyż moje rozumienie reszta jest, że dany zasób powinien mieszkać w konkretna lokalizacja, a nie kilka zależnie od tego, ile informacji Cię interesuje.
System, który tworzę, jest jeszcze bardziej skomplikowany niż ten. Załóżmy, że użytkownik utworzył wiele kręgów znajomych i przypisał im różne prawa dostępu. Na przykład moje "znajomi" mogą mieć dostęp do moich urodzin, a moje "zawodowe" koło może mieć dostęp do mojej historii zatrudnienia, ale nie na odwrót. Aby zastosować odpowiedź z podanego przeze mnie pytania, muszę mieć sposób na uzyskanie wszystkich kręgów użytkownika (które być może będę chciał zachować w tajemnicy ze względów bezpieczeństwa), a następnie przejść przez /circles/a/users/42
, /circles/b/users/42
, /circles/c/users/42
itd. , a następnie połączyć wyniki, aby wyświetlić maksymalną ilość dostępnych informacji. Oczywiście nie ma potrzeby, aby jedno koło otrzymywało wszystkie informacje, które otrzymają inne kręgi. Wierzę, że jest to wystarczająco trudne (zauważ, że prawdopodobnie muszę to zrobić z kilkoma rodzajami obiektów i że przyszłe wersje mogą wymagać innej procedury), ale co jeśli chcę nałożyć ograniczenia bezpieczeństwa na konkretnego użytkownika pomimo faktu, że że jest także w niektórych kręgach? Czy ten problem może zostać rozwiązany? Nawet jeśli odmówię odpowiedzi na którekolwiek z powyższych zapytań i wymyślę nowe, które może dać mi odpowiedź, to nadal ujawni to, że ten konkretny użytkownik jest traktowany inaczej z powodu indywidualnych ograniczeń dostępu.
Czego mi tu brakuje? Czy jest nawet możliwe rozwinięcie usługi internetowej RESTful?
Jeśli wniosek jest taki, że zachowanie nie jest restupowane, czy nadal stanowiłoby to sytuację, w której byłoby moralnie w porządku, aby zerwać umowę REST? Jeśli tak, jakie są negatywne konsekwencje? Czy na przykład ryzykuję problemami z buforowaniem proxy?
Dzięki za odpowiedź! Jak rozumiem, mógłbym wybrać rozwiązanie hack-ee, jeśli potrzebuję zwrócić nietrywialny zestaw elementów na podstawie złożonych uprawnień. Wspomniałem jednak o buforowaniu w moim pytaniu. Aby określić: * Czy istnieje ryzyko, że proxy buforowania (lub podobne) będzie dystrybuować tę samą wersję obiektu do użytkowników z różnymi uprawnieniami? * Także w przypadku buforowania, * w jaki sposób mogę poinformować klienta, że zasób zmienił się z powodu zmiana polityki, * pomimo niezmienionego znacznika czasu? Jeszcze raz, dzięki za pomoc! –
@jeremyth napisał: "nie powinno mieć znaczenia, jaki jest adres URL zasobu, jaki kontroluje serwer". Dla innych osób, którzy tutaj się kończą, pojęcie to znane jest jako [HATEOAS] (http://en.wikipedia.org/wiki/HATEOAS), który jest specyficznym typem REST, nie dotyczy wszystkich koncepcji REST. – Wilt
@Wilt Wyrażenie "hipermedia jako silnik stanu aplikacji" jest używane dosłownie w rozprawie Fieldinga.Więc kiedy mówisz "konkretny typ REST", co naprawdę musisz powiedzieć, to "typ REST przewidziany przez osobę, która wymyśliła pojęcie" REST "." Jest to jedna z podstawowych zasad. –