比如1个team可以有多个player,并且1个player可以属于多个team,这就形成了many-to-many关系。针对这种情况,RESTful接口该如何设计呢?
先说创建
POST: /teams/1/players/
PUT: /teams/1/players/1/
这两种哪个更合适些呢,我是比较倾向第2种。
再说更新,因为是N:N的关系,关系表里可能有如下数据
如果我想把player_id为1并且team_id为2的改为team_id为3....接口如果设计为
PUT: /teams/3/players/1/
也会把player_id为1并且team_id为1的修改为team_id为3....显然不是我想要的...
该如何设计呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
n:n情况下一个接口已经不适用了:
1./teams/{id}/players/{id}
或者/players/{id}/teams,二者选一(以下讨论假定选择前者)
2.还需实现/memberships/,这个接口维护两者关系的UUID。这是最重要的。这样你可以把/players/{id}/teams/用来维护当前的memberships的hyperlinks。
这时无论teams还是players的AUD操作都在 /teams/{id}/players/{id}完成,同时同步/memberships下的关系即可。
3.如果你需要跟踪历史关系,还可以有/players/{id}/past_memberships/,这个接口也是一个membership的hyperlinks。