Фильтры API REST для «себя» - PullRequest
0 голосов
/ 31 мая 2018

У меня много API-интерфейсов, предназначенных для использования как конечным пользователем, так и администрацией.Я буду использовать предпочтения и приведу два примера:

  • / пользователь / предпочтения - это дает конечному пользователю свои предпочтения
  • / users / {пользователь} / предпочтения - это дает любому человекупредпочтения

Очевидно, что это приводит к дублированию.Конечно, я могу использовать только «/ users / {user} / предпочтения» как для конечных пользователей, так и для администраторов, но тогда я сталкиваюсь с другими проблемами:

1) Человек должен будет ввестиих идентификатор пользователя в каждом вызове, что неуклюже.

2) Безопасность теперь станет проблемой, так как бэкэнд должен гарантировать, что каждый запрос обрабатывается правильно, то есть злоумышленник не может ввести идентификатор другого человекаи извлеките их предпочтения.

Каков наилучший шаблон для подражания здесь?

1 Ответ

0 голосов
/ 31 мая 2018

Один из вариантов - заставить /user/preferences принять необязательный параметр ?userid= для вызовов администратора.Затем вы можете использовать ту же конечную точку и ветвь на основе admin == true && args[userid].

Комментарий к конечным точкам прокси-API также хорош, когда менее конкретный вызов (/user/preferences) вызывает более конкретную конечную точку (/user/{userid}/preferences).

Либо хорошие варианты.Многие люди помещают все вызовы администратора под /admin/... и добавляют обработчик, чтобы убедиться, что вызывающий абонент действительно является администратором, прежде чем перенаправлять на обычные вызовы (/admin/users/preferences -> verify is_admin -> /users/preferences?userid=bob).

...