我想使用 ASP.NET Web Api 实现以下休息模式:
http://mydomain/api/students
http://mydomain/api/students/s123
http://mydomain/api/students/s123/classes
http://mydomain/api/students/s123/classes/c456
我使用 ApiController 和以下两种方法使前两个链接正常工作:
public class StudentsController : ApiController {
// GET api/students
public IEnumerable<Student> GetStudents() {
}
// GET api/students/5
public IEnumerable<Student> GetStudent(string id) {
}
}
在同一个控制器中,(或者我是否需要一个名为 ClassesController 的不同控制器?),我将如何实现最后两个链接?此外,“类”部分的路由会是什么样子(如果需要)?
这是我的 WebApiConfig (我想保持动态,而不是尽可能硬编码到 /classes 的路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// EDIT - I'm getting 404's when trying to use this
context.Routes.MapHttpRoute(
name: "JobsApi",
routeTemplate: this.AreaName + "/Students/{id}/Classes/{classId}",
defaults: new { classId = RouteParameter.Optional }
);
编辑这是我新创建的 ClassesController:
public class ClassesController : ApiController {
// GET api/classes
public IEnumerable<TheClass> Get(string id) {
return null;
}
}
尝试访问此 URL 时出现 404 错误:
http://mydomain/api/students/s123/classes