0

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

设想

假设我有一个资源端点/users和以下用户类型:

  • 女孩用户
  • 男孩用户
  • 行政

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

我的问题

是否更 RESTful:

  1. /users使用一个端点通过 OAuth 使用不同的 GrantTypes 或 Scopes 处理此问题。
  2. 具有不同的端点,例如:users/girlsusers/boysusers/all
  3. 为不同类型的用户提供不同的 API。
  4. 我完全不知道可能的答案,这是我没想到的。

如果我有其他端点我只想对某个特定的UserType运行,会有什么改变吗?

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

谢谢你。

4

1 回答 1

0

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

尽管这取决于您要返回的信息类型,手头的资源类型。您是否返回 JSON/XML?您有一个Girl和一个Boy在后端使用的类。如果一个女孩用户点击了你序列化对象并将数据返回给用户的端点——这对我来说听起来不错。

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

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

至于范围,在 OAuth 中,一个范围通常对应一个端点。就像在 Google 中一样,G+ 是一个范围,谷歌驱动器是一个范围。我们看不到 G+ 女孩和 G+ 男孩的瞄准镜,是吗?

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

于 2013-05-09T04:53:32.327 回答