我主要使用的是默認的WebAPI路由映射,具體如下:如何在ASP.NET MVC 4中映射這些WebApi路由?
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
這是工作的罰款,我的網址如下所示:
[GET] /api/customers Get all customers
[GET] /api/customers/1 Get a specific customer
[POST] /api/customers Create a customer
都好,到目前爲止,但現在我想添加一個「搜索」工具。爲此,我將POST一個代表搜索條件的對象,因爲有太多的選項可以將它作爲GET在URL上執行。我的計劃是,URL應該是這樣的:
[POST] /api/customers/search
然而,默認的上述路由,服務器抱怨說,「多的行動中發現匹配的請求」,我認爲這是因爲我現在有兩個接受POST數據的控制器方法(一個用於「創建」,另一個用於「搜索」),並且路由無法區分它們。
我嘗試添加一個包含{action}組件的新路線圖,但這並沒有解決問題 - 大概是因爲該URL對於路線圖都是有效的路線圖。 (我會以某種方式需要從默認的路由映射匹配停止「/搜索」變種
建議請
你是什麼意思「我將發佈一個代表搜索條件的對象」?請你舉例說明POST(創建新的對象)根據搜索條件嗎? – 2012-08-09 15:48:13
我的意思是,而不是有查詢字符串參數我的搜索條件等等,我將發佈一個對象,在我的請求的正文中定義搜索條件。因此,URL將簡單地作爲/ api/customers/search,但請求主體將包含一個XML或JSON塊,告訴服務器要搜索哪些字詞等。 – 2012-08-09 16:17:11
爲什麼不使用[POST]/api/customers?search = {你的搜索詞}? – 2012-08-09 16:22:44