restful api 不同角色访问同一url路径的问题

最近自己写的小项目中用了resuful api,现在遇到了一些问题

问题1:假设有一个club表,这个表有三类人可以修改,分别是用户,社长,还有管理员

那么对于修改club表的url是 put/patch -> api/clubs

  1. 如何区分是哪一类用户提交的修改,是在controller层做区分,还是service层,如何区分
  2. 如果用户、社长、管理员表示一种角色,那么在角色数量比较多的时候有什么比较好的方法处理区分
  3. 如果不需要区分,那么有什么比较优雅的方式解决这个问题呢

问题2:

有时候同一个用户的修改操纵都会有很多不同情况,比如不同状态之间的改变,有些状态改变了会涉及其他表的变化。感觉这些情况下restful不如直接表示语义的接口来的方便。想问下如果用restful改如果应对这种情况呢,如果先接受再判断那么我认为会很麻烦

没有绝对之分,要看实际controller层定位,如果controller层定位为业务处理层,可以在controller获取用户的角色,然后调用service接口,否则如定位是透传,可以在controller层调用service接口时传入登录对象,在service进行区分处理。

个人一般建议采用前者,底层业务逻辑不依赖具体的角色对象,更好地复用service接口,比如有些业务只区分用户和管理员角色,这样只需要修改controller,无需修改service。