Как создать URL для возврата данных от текущего пользователя в REST API?
у меня есть служба на основе REST, где пользователь может вернуть список своих собственных книг (это частный список).
URL в настоящее время ../api/users/{userId}/books
С каждым вызовом они также будут поставлять маркер аутентификации, поставляемый ранее.
мой вопрос(ы):
поставляет
userId
в URL-адресе избыточно? Поскольку мы получаем токен с каждым вызовом, мы можем узнать, какой пользователь выполняет вызов, и вернуть их список книги. TheuserId
строго не требуется.будет извлекать
userId
нарушить принципы отдыха как/users/books/
похоже, он должен вернуть все книги для всех пользователей?должен ли я просто укусить пулю и аутентифицировать их против токена, а затем проверить, что токен принадлежит тому же
userId
?
3 ответов
короткий ответ:
вы могли бы использовать me
в URL для ссылки на настоящее. При таком подходе у вас будет URL-адрес следующим образом:/users/me/books
.
ответ на каждый вопрос
поставляет
userId
в URL избыточный? Когда мы получаем токен с каждым вызовом, мы можем узнать, какой пользователь выполняет вызов и вернуть свой список книг. TheuserId
не строго требуемый.
вы могли бы рассмотреть возможность сделать что-то вроде этого: /users/me/books
. Где me
относится к настоящее. Это легче понять, чем /users/books
, который можно использовать для возврата всех книг от пользователей.
для некоторой гибкости, кроме /users/me/books
, вы могли бы поддержать /users/{userId}/books
.
URL-адресом /users/me
может использоваться для возврата данных от текущего пользователя. Многие APIs, такие как StackExchange, Facebook, Spotify и в Google+ принять такой подход.
будет извлекать
userId
принципы перерыва как/users/books/
похоже, он должен вернуть все книги для всех пользователей?
Я не думаю, что это нарушит какие-либо принципы отдыха, но я думаю, что ваши ресурсы не будут должным образом индетифицированы. Как я ответил выше, я бы использовал /users/me/books
, а также .
должны Я просто стиснуть зубы и проверить их подлинность на маркер, а затем проверить, что маркер принадлежит к той же
userId
?
при использовании userId
в URL для запроса частной информации от пользователя, нет никакого вреда в проверке, принадлежит ли токен пользователю с userId
включено в URL.
Я не думаю, что удаление имени пользователя будет нарушать любые остальные принципы, потому что после всего, /пользователей и их /книг, его немного открытых для интерпретации, и остальное говорит в принципе не о нем, по другому никак, если вы собираетесь остановиться с ID в запросе, необходимо проверить, что идентификатор пользователя является таким же, как подключенный пользователь, в любом случае, для меня 1 является излишним, поскольку у вас уже есть эта информация, плюс, каждый раз, когда вы собираетесь делать бесполезные чеки, потому что в любом случае аутентифицированный userId-это тот, которому вы будете доверять во всех случаях.
С Наилучшими Пожеланиями
REST-это ресурсы, ориентированные так, что в вашей точке, что такое пользователь ресурса или книга. Моей точки зрения это книга. И я думаю, вы можете запросить эти ресурсы / api / книги?user={userid} Но этот URL-адрес не может решить проблему с разрешением, поэтому вы должны сделать это в своем коде с информацией токена, которую вы можете получить с помощью протокола OAuth2 или что-то еще.