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個參數