【发布时间】:2013-11-16 05:42:49
【问题描述】:
这个问题与this one 非常接近,略有不同。
我想设置一个 Web API 路由表,这样我就可以发出 api/items/5 和 api/items/newest 之类的请求,以便客户端可以获取最新的项目。
我一直在浏览some articles,但没有太多运气来确定我是否以正确的方式进行操作。
我的第一个问题是,让调用者找到最新的item 的“正确”或“干净”方式是什么?可以做api/items/newest 之类的事情吗?还是不赞成?
目前,这似乎适用于我的 WebApiConfig.cs 文件:
config.Routes.MapHttpRoute(
name: "NewestItems",
routeTemplate: "api/items/newest",
defaults: new { controller = "Items" }
);
config.Routes.MapHttpRoute(
name: "ItemsById",
routeTemplate: "api/items/{id}",
defaults: new { controller = "Items" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这种方法有效,但我很好奇是否有更通用的方法可以做到这一点,而无需制定特定于控制器的路由规则。我尝试了以下方法,但由于规则不明确,因此无法正常工作:
config.Routes.MapHttpRoute(
name: "ActionWithNoArgument",
routeTemplate: "api/{controller}/{action}",
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
有没有更有效的方法来做到这一点而不诉诸控制器特定的路由规则?
谢谢大家!
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-web-api