gpt4 book ai didi

c# - ASP.NET Web API 可以处理具有不同 Controller 的子资源吗

转载 作者:太空狗 更新时间:2023-10-29 23:09:42 25 4
gpt4 key购买 nike

想象一个系统,其中包含用户、组以及相应的 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

是否可以将#2 的责任委托(delegate)给#1 的 Get(int?groupId) 方法?我想继续负责使用原始 Controller 处理子资源。换句话说,如果子资源也作为资源存在,那么应该如何处理子资源?委托(delegate)给主要资源 Controller ...

附言现在,我不确定上面的方法是否与 RESTfull 样式“一致”,那是整个其他讨论......

最佳答案

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+" }
);

对于 RPC URI 样式,默认路由将一目了然。

 routes.MapHttpRoute(
name: "ApiDefault",
routeTemplate: "api/{controller}/{id}",
defaults: new { controller = "Users", id = RouteParameter.Optional }
);

您还可以重写 DefaultHttpControllerFactory 类,以您的方式创建 Controller 实例。

希望这对您有所帮助。

关于c# - ASP.NET Web API 可以处理具有不同 Controller 的子资源吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com