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