上下文相关的 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 的详细信息...您可能已经注意到,有两个资源 - teammember.

提示: 在分解参与不同操作的复杂资源时,您可以通过想象不同操作导致的未来扩展问题来获得新的思路客户。如果您被资源的一个客户淹没怎么办,您将如何为另一个客户获得稳定的回复?扩展不同的资源比扩展一种资源的不同部分更容易,因此请查看您的操作并考虑扩展。

我相信你应该做的是为每个管理员创建一个 'user-level' 令牌或一个用户,当他们想要 public 界面时他们应该使用。

只有一个接口,即REST中的/teams API,您的token可以决定验证规则。

或者,如果每个管理员都由一个团队负责,我会设计 /admins/x/teams 端点以进行不同的验证,并且只接受 x 的身份验证。子资源还是RESTful.