Web api似乎只適用於標準用例。 但我想做更復雜的路由,但找不到複雜路由的文檔。 如果我有更多的控制器,路由會變得越來越複雜。ASP.NET 4 MVC Web API:複雜路由的文檔
我可以用依賴性定義幾個可選參數嗎? 像這樣:
/api/document/{par1}/{par2}
PAR1 & par2的應該是可選的,但應該PAR2 PAR1是否存在只匹配。
而遞歸參數可能嗎?
/api/documents/characteristics/{round/green/red-dots}
/api/documents/characteristics/{square/yellow}
/api/documents/characteristics/{square/yellow/flat}
/api/documents/characteristics/{square/yellow/flat/...}
有沒有web api路由的詳細文檔?微軟的教程太簡單了...... 我需要更多關於路由的信息。
我有兩個控制器和一些麻煩,因爲兩個路由非常相似,所以採取了錯誤的路線。我可以使用[動作] - 屬性作爲解決方法,但這種感覺不正確...我也必須考慮路線的順序。這是合乎邏輯的,但沒有提到。 Web api僅適用於簡單的休息API嗎?
編輯: 我嘗試這樣做:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{mandant}/documents/{id}",
defaults: new { controller = "documents", id = RouteParameter.Optional }
);
//routes.MapHttpRoute(
// name: "DefaultApiWithAction",
// routeTemplate: "api/{mandant}/documents/{id}/{action}",
// defaults: new { controller = "documents" }
// );
我有兩種方法:
[AcceptVerbs("get")]
public HttpResponseMessage Get(int id)
[ActionName("file")]
[AcceptVerbs("get")]
public HttpResponseMessage filedownload(int id)
現在我有問題,該文件的動作被觸發,即使我註釋掉第二條路線和正常的獲取特定的文檔方法不會被觸發,因爲多個動作...我嘗試了[NoAction]屬性,但是這個我s不工作... 但是,如果route-template中沒有任何操作,爲什麼會觸發file-method? (或者如果第二條路線是活動的,爲什麼正常的get-document方法不會被觸發,如果網址中沒有動作......) 我目前的解決方法是爲所有其他方法設置默認行爲,但這不是一個好的解決方案。
設置控制器的靜態默認應該處理的路線衝突。你可以使用約束對我來說是新的。謝謝。一個好的web api路由的微軟文檔將會很棒。我還發現你可以使用*作爲catch-all參數,像這樣{* param},但它必須在url的末尾。 – user437899
我發現了asp.net路由的通用文檔:http://msdn.microsoft.com/en-us/library/cc668201.aspx – user437899