我有资源端点,我想对尝试访问端点的用户做出不同的响应。
方案
我们假设我有一个资源端点/users
,以及以下 UserTypes:
当 GirlUser 在GET
上执行/users
时,我希望只允许其他 GirlUsers 访问。我希望 BoyUsers 有类似的结果, Admins 可以接收所有用户。
我的问题
是否更加RESTful:
/users
端点,通过OAuth处理不同的GrantTypes或Scopes。users/girls
,users/boys
和users/all
。如果我有其他端点我希望仅针对某个 UserType 进行操作,会有什么变化吗?
(例如,处理付款的那些。)
谢谢。
答案 0 :(得分:0)
您的端点应独立于用户的性别。有一个共同的用户端点有什么问题。 (你已经做好了!!)
虽然这取决于您想要返回的信息类型,但手头的资源种类。你还在返回JSON / XML吗?您有一个Girl
和一个Boy
类,您可以在后端使用它。如果女孩用户点击端点,你会序列化对象并将数据返回给用户 - 这对我来说没问题。
如果你的UML设计没有区分女孩/男孩,那么你应该有相同的端点。
为了正确理解问题,
i)你回来了什么样的数据?
ii)你是如何设计UML的?
iii)您是否从数据库返回了一些数据?每次端点被击中时,运行所有女孩/所有男孩查询是否昂贵?
对于范围,在OAuth中,一个范围通常对应于一个端点。就像谷歌一样,G +是一个范围,谷歌驱动器是一个范围。我们现在没有看到G +女孩,G +男孩范围吗?
在java术语中,与API设计最接近的匹配是Factory模式(这就是我自己解释它的方式,在技术上可能不正确) - 取决于您调用返回数据的特定方法的用户类型。端点应该是通用的和可扩展的 - 具有单独的API确实是一个糟糕的设计,因为它几乎没有留下扩展。