REST API дизайн аутентифицированного пользователя: / products или / <userid>/ products - PullRequest
0 голосов
/ 19 марта 2019

Я создаю веб-приложение с VueJS в качестве внешнего интерфейса и проверяю подлинность пользователя по API с помощью JWT.

Если я хочу, чтобы API отображал только пользовательские продукты (отфильтрованные), должен быть маршрут:

/ API / продукты

и бэкэнд делают фильтр или

/ апи / Идентификатор_пользователя / продукты

и ограничить доступ к продуктам других пользователей

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Я считаю, что лучше сделать идентификатор пользователя частью URI.В конечном итоге это субъективно, но у него есть несколько преимуществ:

  1. Это действительно дает понять, что список продуктов в этом случае подчинен пользователям.Нет сомнений в том, что это «весь список», если он выглядит как подресурс.
  2. Он оставляет дверь открытой в будущем, чтобы позволить пользователям получать доступ к спискам продуктов других пользователей.
  3. Iкак идея дать каждому объекту в моем API совершенно уникальный URI.Для меня каждый пользователь в вашем примере имеет личный список продуктов, а каждый список продуктов является уникальным ресурсом.
0 голосов
/ 19 марта 2019

Вы получите user_id от JWT, поэтому для нас мы просто используем /api/products в нашем программном обеспечении. Мы избегаем использования нескольких источников данных, так как это может создать путаницу, и все в JWT проходит проверку подлинности, поэтому мы можем доверять этому.

Если бы я хотел, чтобы пользователь мог видеть товары других пользователей, я бы использовал /api/products/search?user_id=XXX для гибкой системы поиска, которую можно расширить для поиска товаров по другим критериям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...