Различное содержимое ресурсов REST в зависимости от прав доступа пользователей

Я хочу дать разные ответы на один и тот же вопрос для разных пользователей, в зависимости от прав доступа. Я прочитал этот вопрос:

Исключение личных данных в ответе RESTful

Но я не согласен с принятым ответом, в котором говорится, что вы должны предоставить как /people.xml, так и / неавторизованные/люди.xml, так как я понимаю REST так, что конкретный ресурс должен находиться в определенном месте, а не в нескольких, в зависимости от того, какая часть информации вас интересует.

Система, которую я разрабатываю, еще сложнее. чем этот. Допустим, пользователь создал несколько кругов друзей и назначил им разные права доступа. Например, мой круг «знакомых» может иметь доступ к моему дню рождения, а мой «профессиональный» круг может иметь доступ к моей истории занятости, но не наоборот. Чтобы применить ответ на вопрос, который я упомянул, мне нужен способ получить все круги пользователя (которые я мог бы сохранить в секрете из соображений безопасности), а затем пройти /circles/a/ users/42, /circles/b/users/42, /circles/c/users/42и т. д., а затем объединить результаты, чтобы отобразить максимальное количество доступной информации. Очевидно, что не обязательно один круг получает всю информацию, которую получают все остальные круги.Я считаю, что это достаточно сложно (обратите внимание, что мне, вероятно, придется делать это с несколькими типами объектов и что в будущих версиях может потребоваться другая процедура), но что, если я хочу наложить ограничения безопасности на конкретного пользователя несмотряна то, что он тоже состоит в каком-то из моих кругов? Можно ли вообще решить эту проблему? Даже если я откажусь отвечать на любой из вышеупомянутых запросов и придумаю новый, который может дать мне ответ, это все равно покажет тот факт, что к этому конкретному пользователю относятся по-разному из-за индивидуальных ограничений доступа.

Что я здесь упускаю? Могу ли я вообще разработать веб-сервис RESTful?

Если вывод состоит в том, что поведение не является RESTful, будет ли это по-прежнему представлять собой ситуацию, когда было бы морально нормально нарушать контракт REST? Если да, то каковы негативные последствия? Например, есть ли риск проблем с кэшированием прокси-сервера?

22
задан Community 23 May 2017 в 12:18
поделиться