带有PUT / PATCH和权限的REST最佳实践是什么?

时间:2019-06-18 09:59:43

标签: rest web-services restful-authentication

我正在使用REST API,但找不到对我的问题的任何答复。这是我的问题:

在我的应用程序中,我具有多个用户角色“管理员”和“用户”。两者都可以PUT / PATCH实体“ Agency”,但是它们不能修改相同的字段:

  • 管理员可以修改所有字段

  • 用户只能修改“名称”和“地址”字段

所以我和我的同事不知道如何在两个选项之间进行选择:

  • 创建两个端点PATCH / api / agency / {id}和PATCH / api / agency / {id} / restricted:第一个仅允许管理,第二个都允许,但仅更新“名称”和“地址” ? =>这比较简单,但它为世界开辟了一条新路线

  • 只有一个观点,如果用户尝试更新未授权字段,则返回403响应? =>如果权限规则变得更复杂,但是将来只有一个端点公开,那么将来这可能会很复杂...

非常感谢您的回复,请原谅我的英语!

1 个答案:

答案 0 :(得分:0)

第二个选项是执行此操作的REST方法。 URI不应表明调用它所需的权限/授权。如果要指示允许的API调用,则正确的机制是HATEOAS,这是REST的基本原理。

我不确定我是否理解您的论点,即将来它会变得复杂。我认为第一种选择为增加复杂性提供了更多机会。如果将来出现新角色该怎么办?如果权限变得更加细化怎么办?在第一个选项中,您的URI将更改。