API da Web do ASP.NET obtém lista de filhos (recursos hierárquicos)
Eu tenho o seguinte esquema de descanso que gostaria de implementar usando o 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
Eu tenho os dois primeiros links funcionando corretamente usando o ApiController e os dois métodos a seguir:
public class StudentsController : ApiController {
// GET api/students
public IEnumerable<Student> GetStudents() {
}
// GET api/students/5
public IEnumerable<Student> GetStudent(string id) {
}
}
Neste mesmo controlador, (ou eu preciso de um controlador diferente chamado ClassesController?), Como eu iria implementar os dois últimos links? Além disso, como seria o roteamento para a parte de 'classes' (se necessário)?
Aqui está o meu WebApiConfig (que eu gostaria de manter como dinâmico, em vez de codificar a rota para as / classes, se possível:
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 }
);
EDIT Aqui está o meu recém-criado ClassesController:
public class ClassesController : ApiController {
// GET api/classes
public IEnumerable<TheClass> Get(string id) {
return null;
}
}
Estou recebendo erros 404 ao tentar acessar este URL:
http://mydomain/api/students/s123/classes