Какова наилучшая практика REST с PUT / PATCH и разрешениями? - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над REST API и не могу найти ответ на свой вопрос. Вот моя проблема:

В моем приложении несколько пользовательских ролей "Администратор" и "Пользователь". Оба могут PUT / PATCH объекта «Агентство», но не могут изменять одинаковые поля:

  • Администратор может изменять все поля

  • Пользователь может изменять только поля «имя» и «адрес»

Так что мы с коллегами не знаем, как выбрать один из двух вариантов:

  • Создать две конечные точки PATCH / api / agency / {id} и PATCH / api / agency / {id} / limited: сначала разрешено только администратору, второе для обоих, но только для обновления «имя» и «адрес» ? => это проще, но создает новый маршрут в мир

  • Только одна точка, которая возвращает ответ 403, если пользователь пытается обновить несанкционированное поле? => это может быть сложным в будущем, если правила разрешений станут более сложными, но доступна только одна конечная точка ...

Большое спасибо за ваш ответ и простите мой английский!

1 Ответ

0 голосов
/ 18 июня 2019

Второй вариант - это REST-способ сделать это. URI не должен указывать разрешения / авторизацию, необходимые для его вызова. Если вы хотите указать разрешенные вызовы API, то правильным механизмом является HATEOAS, который является фундаментальным принципом REST.

Я не уверен, что понимаю ваш аргумент, что он может стать сложным в будущем. Я думаю, что первый вариант предлагает гораздо больше возможностей для увеличения сложности. Что, если в будущем появятся новые роли? Что если разрешения станут более гранулированными? В первом варианте ваш URI изменится.

...