【发布时间】:2013-11-11 23:23:55
【问题描述】:
我有一个 StudentsController,我目前有以下工作:
http://mycompany.com/api/v1/students <-- returns list of students
http://mycompany.com/api/v1/students/5 <-- returns student with Id = 5
我有一个要求让 2013 级的所有学生返校,但下面的当然行不通:
http://mycompany.com/api/v1/students/2013 <-- won't work, because it would look for the student with Id = 2013
我可以这样做:
http://mycompany.com/api/v1/students?gradclass=2013
但我想知道是否有一种方法可以在没有查询字符串的情况下进行,例如:
http://mycompany.com/api/v1/students/gradclasses/2013
上面说的有点道理,但这说不通:
http://mycompany.com/api/v1/students/gradclasses <-- this sort of makes no sense
另外,一旦我们弄清楚了使用路由设置正确解决方案的方法是什么?
这值得吗?最佳做法是什么?我正在努力寻找有关 REST 和 GET 查询参数的最佳实践。
【问题讨论】:
-
学生和班级应该是不同的资源...所以获取班级所有学生的 uri 应该像
/class/{year}/students并且可能指向班级控制器...如果您不喜欢有一个不同的控制器,您可以在学生控制器中执行操作(获取一个班级的所有学生)并用属性路由装饰它...... -
这是有道理的。但是,如果我想向所有有工作机会的学生展示呢?然后是另一个我想展示没有工作机会的学生的案例?另外,直接在 /class 上的 GET 会是什么样子?
标签: rest asp.net-web-api