3
我正在构建一个具有多个具有相同签名的get/post调用的web api。现在我知道在多个相同呼叫的情况下,您通常有2个选项:分开到不同的控制器中,或者在您的路由中使用{action}。我已经采取了{动作}方法,因为它最适合我的大部分控制器。但是,在我的一个控制器中,我宁愿不使用操作方法。Web Api多重获取相同的签名路由
我有打电话像这样:
[HttpGet]
public Program Program(string venue, string eventId)
//api/{controller}/{venue}/{eventId}
现在我需要一个新的呼叫
[HttpGet]
public Program ProgramStartTime(string venue, string eventId)
//api/{controller}/{venue}/{eventId}
我知道我可以添加一个动作名称到这一点,并调用即
api/{controller}/{action}/{venue}/{eventId}
但我觉得它打破了预期。有没有办法,我可能有些像
api/Content/LAA/1/PST
api/Content/LAA/1?PST
另外,如果我必须去行动路线,我现在已经有了我使用的其他控制器的路由的方式,但它只是使用(编号)作为其唯一的参数。一个新的路线会与这个路线冲突吗?有没有更好的方法来设置我的路线?
config.Routes.MapHttpRoute(
name: "...",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {id = RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
name: "...",
routeTemplate: "api/{controller}/{action}/{venue}/{eventId}/{...}/{***}/{###}",
defaults: new {### = RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
name: "...",
routeTemplate: "api/{controller}/{action}/{venue}/{eventId}/{...}",
defaults: new {... = RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
name: "...",
routeTemplate: "api/{controller}/{action}/{venue}",
defaults: new {venue = RouteParameter.Optional}
);
我预计,将有多达5个参数