【发布时间】:2016-09-18 14:33:19
【问题描述】:
我有三个不同的模型,User、PermissionSet 和 Permission。这些模型分别代表它们的 SQL 表。
User 具有多对一关联 PermissionSet,用户可能有一个 PermissionSet 或没有。 PermissionSets 将不属于任何一个或多个Users。
PermissionSet 与Permissions 具有多对多关联。一个Permission 可以由多个PermissionSets 拥有或不拥有,其中PermissionSets 可以拥有多个Permissions 或根本不拥有。
所以我创建了四个表:users、permission_sets、permissions 和一个联结表 permission_sets_permissions。
我需要保留在User 的PermissionSet 中所做的更改。这由一个名为 PermissionSetGrant 的模型处理,它有自己的表 permission_set_grants。
使用基于 HTTP 和 JSON 的 RESTful API 更改 PermissionSet 的 Permissions 的最佳方法是什么?
例如,用这样的请求修改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。因此,批处理操作将在第二种方法中执行。
【问题讨论】:
标签: rest restful-architecture restful-url api-design httpverbs