У меня есть три разные модели: User
, PermissionSet
и Permission
. Эти модели представляют собой таблицы SQL соответственно.Обновление связи «многие-ко-многим» с REST
User
имеет ассоциацию с множеством людей PermissionSet
, пользователь может иметь один PermissionSet
или none. PermissionSet
s будет принадлежать ни одному, ни многим. User
s.
PermissionSet
имеет связь «много-ко многим» с Permission
s. A Permission
может принадлежать нескольким PermissionSet
s или none, где PermissionSet
s может быть владельцем несколько Permission
или ни одного.
Таким образом, я создал четыре стола: users
, permission_sets
, permissions
и соединительную таблицу, permission_sets_permissions
.
Мне нужно сохранить изменения, внесенные в User
's PermissionSet
. Это обрабатывается моделью PermissionSetGrant
, которая имеет свою собственную таблицу, permission_set_grants
.
Каков наилучший способ изменить Permission
s PermissionSet
с RESTful API на основе HTTP и JSON?
Например, это хороший способ изменить PermissionSet
с такой просьбой:
PUT /api/v1/permission_sets/7
// Payload
{
"permission_set": {
// Assume these properties of the entity aren't changed
"name": "default",
"description": "Default permission set.",
// Here we're changing the permissions
"permission_ids": [
24,
27,
35
]
}
}
-> 200 OK
или добавить разрешения с дополнительным путем REST вместо этого?
POST /api/v1/permission_sets/7/permissions
// Payload
{
"permission": 24
}
-> 201 CREATED
и когда нам нужно удалить, что разрешение
DELETE /api/v1/permission_sets/7/permissions/24
-> 203 ACCEPTED
Я хотел бы также добавить, что запрос является тождественным и детерминированным от аспекта клиента. Количество разрешений составляет не менее 100. Следовательно, пакетные операции будут выполняться во втором подходе.