Допустим, у меня есть компания, которая оценивает самых симпатичных кошек в Интернете.
Я предлагаю ресурс, на/cats/
котором пользователи получают самые последние, самые милые и очаровательные кошки.
Пользователи могут получить только топ-3 кошек, если они не заплатили вообще или зарегистрировались. Лучшие 10 кошек, если они заплатили 337 долларов и вошли в систему, и первые 100 кошек, если они заплатили 1337 долларов и вошли в систему. У меня есть «идентификатор пользователя» при выполнении запроса.
Короче говоря, потребители /cats/
получают разное количество кошек в зависимости от их «рейтинга пользователей» . У меня есть идентификатор пользователя на стороне потребления, но у меня нет явного представления уровня пользователя на стороне потребления. Я хотел бы сообщить пользователям, что они могут обновить свою подписку при оформлении запроса. То есть мне нужно различать 3 кошки, поскольку я предлагаю только 3 кошки и 3 кошки, потому что это разрешено на уровне пользователя .
Какова лучшая практика для различения ограничения ресурса, потому что у потребителя нет достаточных привилегий, и ограничения его, потому что это то, что есть у потребителя?
Как клиент узнает, могут ли они повысить свой рейтинг? То есть они получили только ограниченный ресурс, потому что у них нет разрешений. Какова лучшая практика здесь?
Обратите внимание, это грубое упрощение фактического случая. Также, чтобы уточнить - чтение ценится.
Обновить:
Вот варианты, которые мы рассмотрели:
- Хранить объекты разрешений пользователей один раз на клиенте, запрашивая его только при выполнении входа в систему или обновления учетной записи.
- Передача
null
значений в JSON, указывающих, что он существует, но фактическое ничего не было передано. Таким образом, 10 кошек для пользователя с 3 кошками могут быть["Garfield","Sylvester","Puss in Boots",null*7]
- Передача пары разрешений ресурса
{cats:["Whiskers","Fluffy","Socks"],authCount:3}
Я хотел бы сделать это правильно в первый раз, чтобы доставить самых симпатичных кошек в лучшем виде, и мы бы и мы хотели