处理端点的变量响应的正确REST方法是什么,该端点基于访问它的用户类型?

时间:2013-05-08 21:34:38

标签: rest scope oauth-2.0 restful-architecture

我有资源端点,我想对尝试访问端点的用户做出不同的响应。

方案

我们假设我有一个资源端点/users,以及以下 UserTypes:

  • GirlUser
  • BoyUser
  • 管理

GirlUser GET上执行/users时,我希望只允许其他 GirlUsers 访问。我希望 BoyUsers 有类似的结果, Admins 可以接收所有用户。

我的问题

是否更加RESTful:

  1. 使用一个/users端点,通过OAuth处理不同的GrantTypes或Scopes。
  2. 拥有不同的端点,例如:users/girlsusers/boysusers/all
  3. 为不同类型的用户提供不同的API。
  4. 我完全偏离了可能的答案,这是我不期望的事情。
  5. 如果我有其他端点我希望仅针对某个 UserType 进行操作,会有什么变化吗?

    (例如,处理付款的那些。)

    谢谢。

1 个答案:

答案 0 :(得分:0)

您的端点应独立于用户的性别。有一个共同的用户端点有什么问题。 (你已经做好了!!)

虽然这取决于您想要返回的信息类型,但手头的资源种类。你还在返回JSON / XML吗?您有一个Girl和一个Boy类,您可以在后端使用它。如果女孩用户点击端点,你会序列化对象并将数据返回给用户 - 这对我来说没问题。

如果你的UML设计没有区分女孩/男孩,那么你应该有相同的端点。

为了正确理解问题,
i)你回来了什么样的数据? ii)你是如何设计UML的? iii)您是否从数据库返回了一些数据?每次端点被击中时,运行所有女孩/所有男孩查询是否昂贵?

对于范围,在OAuth中,一个范围通常对应于一个端点。就像谷歌一样,G +是一个范围,谷歌驱动器是一个范围。我们现在没有看到G +女孩,G +男孩范围吗?

在java术语中,与API设计最接近的匹配是Factory模式(这就是我自己解释它的方式,在技术上可能不正确) - 取决于您调用返回数据的特定方法的用户类型。端点应该是通用的和可扩展的 - 具有单独的API确实是一个糟糕的设计,因为它几乎没有留下扩展。