Asp.net web api web api中的自定义和常规方法
起初,我对服务器有普通的GET/POST/PUT/DELETE请求,我的web api的config.route就足够了:Asp.net web api web api中的自定义和常规方法,asp.net-web-api,asp.net-web-api2,Asp.net Web Api,Asp.net Web Api2,起初,我对服务器有普通的GET/POST/PUT/DELETE请求,我的web api的config.route就足够了: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
然后,我需要一个自定义操作(例如,我想要api/GetAllUsers-GET,而不是api/User/212-GET)
因此,我将配置更改为:
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get" ,id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApiGet",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApiPost",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "post", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApiPut",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "put", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApiDelete",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "delete", id = RouteParameter.Optional }
);
现在的问题是,我无法访问经典的GET('DefaultApiGet')
编辑
换句话说,如果我有一个用户,我想得到他的一篇文章,或者所有文章,那么我想能够做到这一点(用户id=12345):
“api/UserPost/12345”-获取用户12345的最后一篇文章
和
“api/UserPost/GetAll/12345”-获取用户12345的所有帖子问题和解决方案已得到很好的解释您可以尝试删除“DefaultApiWithAction”路径中的
id=RouteParameter.Optional
吗?我尝试过,但现在帖子不起作用。我得到:405-不允许使用此方法是否有任何帮助: