zam*_*6ak 5 c# rest resources asp.net-web-api
想象一个系统与用户,组相对应ApiControllers.然后想象以下访问模式:
/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
Run Code Online (Sandbox Code Playgroud)
是否可以将#2的责任委托给#1的Get(int? groupId)方法?
我想继续负责使用原始Controller处理子资源.换句话说,如果子资源也作为资源存在,那么子资源处理应该是什么?委托给主要资源控制员......
PS现在,我不确定上述方法是否与RESTfull样式"合作",这是完整的其他讨论......
小智 6
WEB Api Beta不支持路由的方法级别属性.他们说,正在考虑改进下一版本的路由故事.
目前唯一的方法(据我所知)是明确地映射这些路线.在你的情况下:
// for your rest style api
routes.MapHttpRoute(
name: "UserGroups",
routeTemplate: "api/groups/{groupID}/users",
defaults: new { controller = "Users"},
constraints: new { groupID = @"\d+" }
);
Run Code Online (Sandbox Code Playgroud)
对于RPC URI样式,默认路由将一目了然.
routes.MapHttpRoute(
name: "ApiDefault",
routeTemplate: "api/{controller}/{id}",
defaults: new { controller = "Users", id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
此外,您还可以覆盖DefaultHttpControllerFactory类,以您的方式创建控制器实例.
希望这有帮助.
| 归档时间: |
|
| 查看次数: |
2104 次 |
| 最近记录: |