我正在创建一个API,根据权限验证用户可以更改对象的不同属性。
解决这个问题的常用方法是什么?
我应该有像
这样的端点吗? /admin/users
和/users
具有不同的API定义和功能?
听起来设计相当不灵活,用户可以获得can_modify_foo_prop
和can_modify_bar_prop
等权限的情况如何?
我在想更好的解决方案是只提供一个端点/users
并根据经过身份验证的用户角色,某些字段是只读/隐藏的?这似乎更灵活,但文档/实施可能更烦人。
答案 0 :(得分:0)
请记住,URI表示统一资源标识符。这意味着给定用户(概念)应始终由相同的URI标识,因此我建议您的第二个提议,即具有单个层次结构/用户列表:
/users/1
/users/2
...
可以根据当前用户的权限定义(在适当的媒体类型中)返回文档以保存属性。
现在,关于这是否易于使用是主观的。我认为返回纯数据总是总是有点不方便,因为客户端必须解析和理解数据。这就是创建HTML和HTML表单的原因,因此客户端不需要知道如何来呈现数据,也不需要知道什么是可编辑的,什么是不。然后,我再也不知道你确切的用例。