ASP.NET Web API получает дочерний список (иерархические ресурсы)
У меня есть следующая схема отдыха, которую я хотел бы реализовать с помощью 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 (который я хотел бы сохранить динамическим, а не жестко кодировать маршрут к / классам, если это возможно:
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;
}
}
Я получаю 404 ошибки при попытке перейти по этому URL:
http://mydomain/api/students/s123/classes