2016-03-01 4 views
4

Я видел идентификаторы URI, которые поддерживают магические идентификаторы для идентифицированного пользователя, как показано ниже:Использует ли магия (me/self) идентификаторы ресурсов, идущие против принципов REST?

GET /user/me - list my profile 
GET /user/me/photos - list my photos 

где те ниже использовать фактический идентификатор пользователя

GET /user/742924 
GET /user/742924/photos 

Проблема, которую я вижу в том, что тот же ресурс id указывает на другой ресурс в зависимости от пользователя, прошедшего проверку подлинности.

Это противоречит любым принципам REST?

ответ

6

Использование /me, чтобы назвать ресурс, который соответствует аутентифицированному пользователю , отлично подходит для перспективы REST. По диссертации Роя Томаса Филдинга, любой информации, которая может быть названа может быть ресурс:

5.2.1.1 Resources and Resource Identifiers

Ключа абстракцией информации в REST является ресурсом. Любая информация, которую можно назвать, может быть ресурсом: документ или изображение, временная служба (например, «сегодняшняя погода в Лос-Анджелесе»), коллекция других ресурсов, не виртуальный объект (например, человек) и т. Д. , Другими словами, любое понятие, которое может быть целью гипертекстовой ссылки автора, должно соответствовать определению ресурса. Ресурс представляет собой концептуальное сопоставление с набором объектов, а не с сущностью, которая соответствует отображению в любой конкретный момент времени. [...]

При использовании /me, у вас есть локатор для идентифицированного пользователяи она всегда будет определять концепции аутентифицированного пользователя, независимо от того, какого пользователя проходит проверку подлинности.

0

Это прекрасно.

Независимо от того, является ли это одним и тем же объектом в базе данных, не имеет значения, тем правильнее будет описание того, что каждая концепция должна иметь URI. Понятие «текущий пользователь» отличается от «user 742924», так что все в порядке.

Это может быть даже хуже, чем «текущий пользователь», «последний зарегистрированный пользователь», «пользователь с именем, начинающимся с буквы A», «самый старый пользователь» и т. Д. Все они могут быть разными ресурсы, даже если они могут указывать на одного и того же «пользователя».

 Смежные вопросы

  • Нет связанных вопросов^_^