上下文相关的 REST API 策略
Context dependent REST API strategies
您建议采用什么策略来制作 RESTful API "context dependent"?
让我详细说明。
在我正在进行的项目中,我们公开了一项资源 Team
。用户可以创建自己的团队,这会导致向 API 发出 POST /teams
请求。使用适用于用户创建的团队的规则集验证请求。
我们还有一个管理界面,某些用户可以使用它来创建相同类型的 Team
资源,但是这由一组略有不同的验证规则管理。
管理员可以使用我们的 public 或管理界面,因此必须根据他们的上下文而不是用户的能力进行验证。
针对这种特定情况重新表述上面的问题:我们如何以 RESTful 方式区分这两个上下文?即使 "result" 是同一类型,我们是否会创建两个不同的资源?如果是,您建议采用什么命名约定?
REST 中的任何内容都不能保证资源对不同客户端的行为相同。此外,由于授权信息附加到每个请求,资源很自然地对其进行分析并将特定于客户端的逻辑应用于请求。
但是!如果您的资源上的某些操作引入了复杂的资源不变量,并且资源部分具有依赖的生命周期,您最好尽早将其重构为更小的资源。例如,如果管理员应将 member
添加到 team
,然后 RegularUser 应在 team
中填写 member
的详细信息...您可能已经注意到,有两个资源 - team
和 member
.
提示: 在分解参与不同操作的复杂资源时,您可以通过想象不同操作导致的未来扩展问题来获得新的思路客户。如果您被资源的一个客户淹没怎么办,您将如何为另一个客户获得稳定的回复?扩展不同的资源比扩展一种资源的不同部分更容易,因此请查看您的操作并考虑扩展。
我相信你应该做的是为每个管理员创建一个 'user-level' 令牌或一个用户,当他们想要 public 界面时他们应该使用。
只有一个接口,即REST中的/teams API,您的token可以决定验证规则。
或者,如果每个管理员都由一个团队负责,我会设计 /admins/x/teams 端点以进行不同的验证,并且只接受 x 的身份验证。子资源还是RESTful.
您建议采用什么策略来制作 RESTful API "context dependent"?
让我详细说明。
在我正在进行的项目中,我们公开了一项资源 Team
。用户可以创建自己的团队,这会导致向 API 发出 POST /teams
请求。使用适用于用户创建的团队的规则集验证请求。
我们还有一个管理界面,某些用户可以使用它来创建相同类型的 Team
资源,但是这由一组略有不同的验证规则管理。
管理员可以使用我们的 public 或管理界面,因此必须根据他们的上下文而不是用户的能力进行验证。
针对这种特定情况重新表述上面的问题:我们如何以 RESTful 方式区分这两个上下文?即使 "result" 是同一类型,我们是否会创建两个不同的资源?如果是,您建议采用什么命名约定?
REST 中的任何内容都不能保证资源对不同客户端的行为相同。此外,由于授权信息附加到每个请求,资源很自然地对其进行分析并将特定于客户端的逻辑应用于请求。
但是!如果您的资源上的某些操作引入了复杂的资源不变量,并且资源部分具有依赖的生命周期,您最好尽早将其重构为更小的资源。例如,如果管理员应将 member
添加到 team
,然后 RegularUser 应在 team
中填写 member
的详细信息...您可能已经注意到,有两个资源 - team
和 member
.
提示: 在分解参与不同操作的复杂资源时,您可以通过想象不同操作导致的未来扩展问题来获得新的思路客户。如果您被资源的一个客户淹没怎么办,您将如何为另一个客户获得稳定的回复?扩展不同的资源比扩展一种资源的不同部分更容易,因此请查看您的操作并考虑扩展。
我相信你应该做的是为每个管理员创建一个 'user-level' 令牌或一个用户,当他们想要 public 界面时他们应该使用。
只有一个接口,即REST中的/teams API,您的token可以决定验证规则。
或者,如果每个管理员都由一个团队负责,我会设计 /admins/x/teams 端点以进行不同的验证,并且只接受 x 的身份验证。子资源还是RESTful.