C# ASP.NET Web API能否使用不同的控制器处理子资源

C# ASP.NET Web API能否使用不同的控制器处理子资源,c#,rest,resources,asp.net-web-api,C#,Rest,Resources,Asp.net Web Api,想象一个系统,其中有用户、组和相应的apicontroller。 然后想象以下访问模式: /api/users /api/users/1 /api/users?groupId=1 <- #1 returns users belonging to group id 1 via Get(int? groupId) /api/groups/ /api/groups/1 /api/groups/1/users <- #2 sub resou

想象一个系统,其中有用户、组和相应的
apicontroller
。 然后想象以下访问模式:

/api/users                  
/api/users/1
/api/users?groupId=1    <- #1 returns users belonging to group id 1 via Get(int? groupId)

/api/groups/
/api/groups/1
/api/groups/1/users     <- #2 sub resource, returns users belonging to group id 1
/api/users
/api/users/1

/api/users?groupId=1WEB api测试版不支持路由的方法级属性。他们说,他们正在考虑为下一版本改进路由故事

目前唯一的方法(如我所知)是明确地映射这些路线。就你而言:

 // for your rest style api 
 routes.MapHttpRoute(
     name: "UserGroups",
     routeTemplate: "api/groups/{groupID}/users",
     defaults: new { controller = "Users"},
     constraints: new { groupID = @"\d+" } 
 );
对于RPC-URI样式,默认路由将作为glance工作

 routes.MapHttpRoute(
           name: "ApiDefault",
           routeTemplate: "api/{controller}/{id}",
           defaults: new { controller = "Users", id = RouteParameter.Optional }
       );
此外,您还可以重写DefaultHttpControllerFactory类以自己的方式创建控制器实例

希望这有帮助