【发布时间】:2013-01-18 09:58:28
【问题描述】:
我想使用 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
【问题讨论】:
-
就这个问题的路由方面而言,这可能与我正在寻找的内容一致,但我希望能够动态地做到这一点,所以我不必须为每个控制器执行此操作
标签: c# asp.net rest asp.net-web-api asp.net-mvc-routing