REST API Два отдельных ресурса для создания пользователя?

В настоящее время создание REST API и одной из его функций будет создание пользователей. Мое приложение будет создавать пользователей двумя способами:

  • Регистрируйтесь, пользователи добавляют себя с обычными данными: электронная почта, пароль, имя пользователя, дата рождения.
  • Создание вручную, администратор добавляет пользователя с обычными данными и любые дополнительные данные по мере необходимости.

Моя установка users Таблица, users_metadata стол и users_permissions стол, а также несколько других. Электронная почта и пароль хранятся в users таблица, имя пользователя и дата рождения в users_metadata Таблица. При создании пользователя вручную могут быть изменены другие метаданные и права пользователя, а также данные в других таблицах.

Было бы лучше иметь два разных ресурса для управления созданием пользователя?

0

Решение

Было бы лучше иметь два разных ресурса для управления созданием пользователя?

Я бы не стал создавать два разных ресурса, которые представляют user и оба моделируют процесс его создания. Поскольку пользователь является пользователем, по моему мнению, они должны создаваться через один и тот же ресурс.

Создание вручную, администратор добавляет пользователя с обычными данными И любые дополнительные данные по мере необходимости.

При создании пользователя вручную другие метаданные и права пользователя, а также данные в других таблицах, могут быть изменены.

Если это имеет смысл, вы можете смоделировать эти дополнительные данные как отдельный (под) ресурс. То же самое касается разрешений. Этот субресурс может иметь собственный URL (например, /users/{id}/meta а также /users/{id}/permissions) на который клиент выдает отдельный POST запросы, или это может быть вложено в структуру данных, которая отправляется в API, например так:

{
"name": "John",
"email-address": "john@doe.com",
"permissions": {
"read": true,
"write": false
},
"meta-data": {
"date-of-birth": "2000-01-01"}
}

Подход с отдельными субресурсами по их собственным URL-адресам упрощает контроль доступа и проверку. С другой стороны, это увеличивает нагрузку на клиента. Это также может поставить вас в положение, в котором администратор создает пользователя, основная информация сохраняется, но при сохранении разрешений возникает ошибка; в зависимости от вашего варианта использования вам может понадобиться, а может и не понадобиться, как-то автоматически.

Подход, в котором вложенные ресурсы вложены в структуру данных, заставляет логику обрабатывать POST запрос немного более сложный, но он действительно облегчает работу на стороне клиента и дает вам возможность сделать все действие атомарным, заключив его в транзакцию и откатившись, если что-то пойдет не так.

Примечание. Эти два подхода не являются взаимоисключающими; Вы можете сделать оба, если хотите.

Какой из этих подходов является наилучшим, зависит от того, сколько существует подресурсов, насколько они сложны и насколько сложен контроль доступа к подресурсам; чем больше субресурсов и / или чем сложнее управление доступом, тем больше вероятность того, что я настрою разные URL для субресурсов.

В этом конкретном случае я бы подключил ресурсы в структуре данных и имел бы клиентов POST все данные сразу.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector