RESTGET 方法命名以获取对象列表

问题描述

我有一个 courses 列表和一个 students 列表。这个想法是一个学生可以参加多门课程。

要求返回一个统一的课程-学生列表,其中“key”类似于courseId + studentId。 GET 结果将类似于:

  • courseId、courseName、studentId、studentName、...

我的问题是,这是定义此 REST GET 方法的最佳方法我有两个解决方案,欢迎提出任何想法。

  1. GET:api-name/v1/courses/students?version=5 - 所有学生从所有课程中回来
  2. GET:api-name/v1/courses-students?version=5 - 在这种情况下,是作为课程学生的专用方法

欢迎提出任何想法。非常感谢!

更新: 我打算使用解决方案2。 此外,这种关系可以被视为一种新资源的评论也是一个强有力的论据。

解决方法

我敢打赌第二个选项,因为您要公开一种新资源,即课程和学生之间的关系 - 甚至可以通过与两个 ID 相关的“键”来识别。

使用此选项可能允许您例如使用密钥查找新资源,或使用查询字符串参数过滤此新资源(例如 api-name/v1/courses-students?courseId=12,45&studentId=32,67),或请求单个课程的学生 (api-name/v1/courses/{courseId}/students) 或单个学生的课程 (api-name/v1/students/{studentId}/courses)。

有一个关于此主题的问题有很好的答案here