以前,我有兩個方法,我一個標記與[WebGet]
和一個與[WebInvoke(Method = "POST"]
瞭解路線,如何創建兩條可以同時爲GET和POST的「相同」路線?
當我做一個GET或POST一個到我指定的,它總是調用正確的方法的URL。
的網址是:
POST: fish-length
GET: fish-length?start-date={startDate}&pondId={pondId}
現在,我使用的Web API,我不得不seperately定義我的路線,像這樣:
RouteTable.Routes.MapHttpRoute(
name: "AddFishLength",
routeTemplate: "fish-length",
defaults: new
{
controller = "FishApi",
action = "AddFishLength"
});
RouteTable.Routes.MapHttpRoute(
name: "GetFishLength",
routeTemplate: "fish-length?start-date={startDate}&pondId={pondId}",
defaults: new
{
controller = "FishApi",
action = "GetFishLength"
});
但是第二條路線行不通,因爲您在routeTemplate中不允許使用?
。
我可以將URL格式更改爲fish-length/{startDate}/{pondId}
之類的東西,但它確實不是一個很好的暴露服務的方式。
有沒有更好的方法來做到這一點?另外,因爲我之前正在做一個POST和GET到相同的URL,我需要確保我的路由方法仍然允許這個。假設上述工作,我仍然不知道它將如何正確路由。
我無法弄清楚它是如何映射到該動作。假設我的方法被稱爲'GetFishLength',那麼它如何知道調用它,而不是'GetFishName'?您不在路由信息中指定操作的名稱。 – NibblyPig