#rest #api
#rest #API
Вопрос:
Я создаю веб-приложение с VueJS в качестве интерфейса и аутентифицирую пользователя в API с помощью JWT.
Если я хочу, чтобы API отображал только пользовательские продукты (отфильтрованные), должен ли маршрут быть:
/api/продукты
и серверная часть выполняет фильтр или
/api/идентификатор пользователя/продукты
и ограничить доступ к продуктам других пользователей
Ответ №1:
У вас будет идентификатор пользователя из JWT, поэтому для нас мы просто используем /api/products
в нашем программном обеспечении. Мы избегаем использования нескольких источников данных, поскольку это может создать путаницу, и все в JWT аутентифицируется, поэтому мы можем доверять этому.
Если бы я хотел разрешить пользователю просматривать продукты других пользователей, я бы использовал /api/products/search?user_id=XXX
для гибкой поисковой системы, которую можно было бы расширить для поиска продуктов по другим критериям.
Ответ №2:
Я считаю, что лучше сделать идентификатор пользователя частью uri. В конечном счете, это субъективно, но у него есть несколько преимуществ:
- Это действительно проясняет, что список продуктов в этом случае является подчиненным для пользователей. Нет сомнений, что это «весь список», если он выглядит как вспомогательный ресурс.
- Это позволяет пользователям в будущем получать доступ к спискам продуктов других пользователей.
- Мне нравится идея предоставления каждому объекту в моем API полностью уникального URI. Для меня у каждого пользователя в вашем примере есть личный список продуктов, и каждый список продуктов является уникальным ресурсом.