【问题标题】:Restful API endpoints and differening permissions/abilitiesRestful API 端点和不同的权限/能力
【发布时间】:2013-07-23 18:52:08
【问题描述】:

假设我有一个供患者和医生使用的应用程序。

患者应该能够在 `site.com/api/patients/ 访问他们的信息。

医生也应该能够访问有关患者的信息,但会收到与患者不同的信息。

我可以想象两种处理方式:

api/patients 具有在不同权限之间进行拆分的逻辑

api/patients 用于患者和 api/doctors/patients 医生获取患者信息

这看起来相对不错,但后来我开始思考当医生和患者都可以为患者添加任务时会发生什么。

api/patients/tasks/ 让患者添加任务 BUT api/doctors/patients/tasks 就嵌套而言,这变得非常糟糕(我认为限制我的路线深度可能会更好)

拥有api/patients 并检查用户是医生还是患者还是嵌套资源更好?最佳实践的共识是什么(如果有的话)?

如果有这样的 API 端点就好了:

api/tasks/ api/patients api/doctors/

让事情变得简单,然后使用令牌或查询字符串控制权限/身份验证。

【问题讨论】:

    标签: api rest endpoint


    【解决方案1】:

    绝对不要做api/doctors/patients等

    这应该是两种不同的 API,一种用于医生,一种用于患者吗?这取决于有多少功能重叠。

    无论如何,您应该已经在跟踪用户的身份验证/授权信息。否则你会让医生修改不去看他们的病人。使用身份验证信息来确定调用者支持哪些值/选项。

    我假设您正在处理我复制 Bob 博士的令牌/查询字符串并发送我自己的请求的情况?

    【讨论】:

    • 感谢您的回复。两个不同的 api 实际上很有意义。就命名方案而言,有什么建议吗?另外,你最后一个问题到底是什么意思? api 的身份验证仍然让我感到困惑。
    • 命名方案 - 如果不了解更多细节,我真的不能说。 :-( 身份验证是让某人通过登录或使用令牌来证明他们是谁。授权是确保某人有权做他们想做的事情。所以当我登录时,我正在进行身份验证。当我试图查看其他人的个人信息,但我无权这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2018-04-22
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    相关资源
    最近更新 更多