REST API: идентификация ресурса и контента, зависящего от аутентификации.

Я разрабатываю API, следуя принципам HATEOAS/RESt. И все же я не уверен в этом основном моменте: идентификация ресурса.

Предположим, этот URL: /images, который показывает все изображения, загруженные пользователем (этому пользователю).

Предположим, я использую токен доступа oauth для целей аутентификации, содержимое /images будет варьироваться в зависимости от заголовка авторизации.

Нарушает ли это идентификацию концепции ресурса?


person ludofleury    schedule 04.10.2012    source источник


Ответы (1)


Нет. Ресурс не обязательно должен быть статичным, чтобы быть спокойным. Представьте себе веб-сервис, который предоставляет информацию о времени суток:

 Http://www.myservice.com/current-time/

Ничто в остальном сценарии не требует, чтобы это работало не так, как ожидалось. Случай с фотографиями заключается в том, что ваша служба возвращает ресурс, представленный на основе информации, установленной в запросе, — отфильтровывая все фотографии, не принадлежащие пользователю, по заголовку аутентификации. Вы все еще возвращаете ту же самую общую вещь, коллекцию фотографий.

Не сильно отличается от того, что вы говорите с заголовком типа ответа, что вы хотите, чтобы возвращалось представление json по сравнению с представлением xml.

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

person Ray    schedule 04.10.2012
comment
Мне было интересно, будет ли этот URL-адрес лучше: /users/{identifier}/images. Но ваше первое предложение Ресурс не должен быть статическим довольно ясно. Спасибо. - person ludofleury; 04.10.2012
comment
@ludofleury я предпочитаю ваш второй формат URL-адреса ресурса, который вы указали в своем комментарии. Это добавляет ясности — вы ожидаете, что изображения пользователя будут отображаться только на основе URL-адреса. Тем не менее, ничего технически не так с оригиналом. - person Ray; 04.10.2012
comment
Да, моя главная проблема в том, что пользователи не должны знать URL-адрес /user. Вот почему я основан на токене доступа. Им не нужно получать свой собственный идентификатор. Спасибо еще раз - person ludofleury; 05.10.2012