你在谈论两件不同的事情:
Routing
ASP.NET MVC 和 Web Api 中使用路由将 URL 直接映射到控制器和/或操作。这对于可读性特别有用,因为开发人员可以专注于设计人类可读的 URL(例如,产品支持和搜索引擎索引)。这里重要的是,路由和控制器之间没有唯一的关系。如果您希望映射相同的控制器/操作,您可以创建 10 个路由。
例如,你的两条路线可以是这样的
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{idLocation}/events/{days}",
defaults: new { id = RouteParameter.Optional }
);
另请注意/api/locations/123?state=md
对于默认路由模板不正确。它是/api/locations/123
。因为 url 中有一个额外的参数,所以您将执行 GetLocationsByState。
控制器
建议每个控制器有一个单一的职责并使其尽可能小。您的业务逻辑应该在其他地方。
杰弗里·巴勒莫(Jeffrey Palermo)(洋葱建筑创始人)说
如果您无需滚动就无法在屏幕上看到 ASP.NET MVC 操作方法,那么您就有问题了
最后,就像你所做的一切一样,你可以做你想做的事,而不用关心它是好还是坏。困难并不总是在于建立一个架构,而是在于维护并遵循自己的规则。
我希望这能帮到您。
我想您对路由不太熟悉,所以请毫不犹豫地阅读intro http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api and 动作选择 http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection.