如何为这个三元关联设计REST APIi路由?

如何为这个三元关联设计REST APIi路由?,rest,api,django-rest-framework,restful-architecture,Rest,Api,Django Rest Framework,Restful Architecture,考虑以下数据库方案: 用户(id、用户名、姓氏、姓氏等) 组(id、名称)//3个条目管理员、审批人或颁发者 项目(id、名称、启动日期等) 与前三个实体相关的三元关联: 成员资格(用户id、组id、项目id) 我需要创建一个路由来更改特定项目中特定用户的组 设计此路线的最佳RESTful体系结构是什么? First draft : PUT : api/membership/user_id/project_id/group_id This route associate group w

考虑以下数据库方案:

  • 用户(id、用户名、姓氏、姓氏等)
  • 组(id、名称)//3个条目管理员、审批人或颁发者
  • 项目(id、名称、启动日期等)
与前三个实体相关的三元关联:

  • 成员资格(用户id、组id、项目id)
我需要创建一个路由来更改特定项目中特定用户的组

设计此路线的最佳RESTful体系结构是什么?

First draft : PUT : api/membership/user_id/project_id/group_id

This route associate group with group_id to user if it doesn't exist and remove it if it's associated
设计这条路线的最佳RestfullArchitecture是什么

可能是通过公开成员资格资源

POST: /api/membership/
{
    'user': ...,
    'group': ...,
    'project': ...,
}


或者,您也可以创建一个“真实”组,该组将链接到项目,名称在“管理员”、“批准者”或“颁发者”之间并向其添加用户。

对于SPA,这会产生大量的前端开销,如管理成员身份主键,这就是为什么我添加了一个从长远来看更有意义的替代选项。结论:违反restfull约束可以使处理SPA的访问约束时的生活更加轻松。在关键时刻之前,使用约束总是会让生活更加轻松您意识到easy不同于simple,并开始带回约束:)关于可维护性,我对系统演化有一个很好的想法,这条路线永远不会在其他环境中使用。
DELETE: /api/membership/{pk}