【发布时间】:2020-06-15 21:30:26
【问题描述】:
我们有一个FitnessClassesService,可以安排健身培训课程。每个班级都有许多演员:
- 主教练解释整个锻炼过程 - 他会说话,但不一定要亲自进行锻炼。
- 替代教练,以防主教练不在时
- 两位培训师在课堂上通过实际练习来展示整个锻炼方式 - 一位为新手而设,一位为老前辈提供
- 两名培训师只是在课堂上四处走动以澄清任何疑问。
当一个类被创建时,所有的actors也会被添加到它里面。培训师有一个应用程序,他们可以从中查看他们今天必须参加的课程(以任何角色)。
我通过调用POST /classes 创建类。
当培训师打开他们的应用程序时,获取所有课程的正确 REST API 是什么。这些是我考虑过的替代方案:
-
Get /classes- 从 HTTP 标头获取 userId 并使用它仅获取当前登录用户的类。但是,这对我来说似乎不是很 RESTful。 -
GET /classes/~alice或Get /classes/current- 来自 designing-uri-for-current-logged-in-user-in-rest-applications 。这只会获取由“current”用户表示的类。但是,与链接问题中“users”是资源而“current”用户代表特定资源的示例不同,我不觉得“current" 代表我的用例的资源。对我来说,“current”代表我感兴趣的所有班级。这听起来像是我必须在classes资源上filter而不是要求特定资源。 -
GET /classes?actorId=alice或GET /classes?actorId=current- 但是如果有人打电话给GET /classes怎么办。我是否应该验证必须始终传递一个actorId。此外,actorId 必须与登录用户的 id 匹配。是否可以根据 URI 参数进行这样的授权。 -
Get /myclasses- 使用不同的 URI。这意味着我将通过POST /classes创建类,但通过不同的 URI 获取类。
处理此问题的规范方法是什么。
【问题讨论】:
标签: rest http uri api-design