我有三種不同的型號,分別爲User
,PermissionSet
和Permission
。這些模型分別代表它們的SQL表。更新與REST的多對多關聯
User
具有多對一關聯PermissionSet
,用戶可能有一個PermissionSet
或沒有。 PermissionSet
s將歸無或多個User
s所有。
PermissionSet
與Permission
s有多對多關聯。 A Permission
可能擁有多個PermissionSet
或沒有,其中PermissionSet
可能擁有多個Permission
或根本沒有。
所以我創建了四個表格:users
,permission_sets
,permissions
和聯結表,permission_sets_permissions
。
我需要堅持在User
的PermissionSet
中所做的更改。這是由一個名爲PermissionSetGrant
的模型處理的,該模型具有自己的表格permission_set_grants
。
根據HTTP和JSON,使用RESTful API更改PermissionSet
的Permission
的最佳方法是什麼?
例如,它是一個很好的方式來修改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
或有額外的休息路徑,而不是添加權限?
POST /api/v1/permission_sets/7/permissions
// Payload
{
"permission": 24
}
-> 201 CREATED
,當我們需要刪除權限
DELETE /api/v1/permission_sets/7/permissions/24
-> 203 ACCEPTED
我還想補充一點,請求來自客戶端的方面冪和確定性。至少,權限數量爲100。因此,批處理操作將以第二種方式執行。