Untergeordnete Liste für ASP.NET-Web-API abrufen (hierarchische Ressourcen)
Ich habe das folgende Restschema, das ich mithilfe der ASP.NET-Web-API implementieren möchte:
http://mydomain/api/students
http://mydomain/api/students/s123
http://mydomain/api/students/s123/classes
http://mydomain/api/students/s123/classes/c456
Ich habe die ersten beiden Links mit dem ApiController und den folgenden beiden Methoden richtig funktioniert:
public class StudentsController : ApiController {
// GET api/students
public IEnumerable<Student> GetStudents() {
}
// GET api/students/5
public IEnumerable<Student> GetStudent(string id) {
}
}
Wie würde ich in demselben Controller (oder benötige ich einen anderen Controller namens ClassesController?) Die letzten beiden Links implementieren? Wie würde das Routing für den 'Klassen'-Teil aussehen (falls erforderlich)?
Hier ist meine WebApiConfig (die ich so dynamisch wie möglich halten möchte, anstatt die Route zu den Klassen / fest zu codieren, wenn möglich:
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 }
);
BEARBEITEN Hier ist mein neu erstellter ClassesController:
public class ClassesController : ApiController {
// GET api/classes
public IEnumerable<TheClass> Get(string id) {
return null;
}
}
Beim Versuch, auf diese URL zuzugreifen, werden 404-Fehler angezeigt:
http://mydomain/api/students/s123/classes