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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage