您可以在Global.asax中修改路由。默認設置爲:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
但你可以改變它,例如使用動作名稱:在MVC的Web API看看這個article
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
欲瞭解更多有關自定義路由。根據意見
以上
更新是問題的答案,「我可以改變路由?」簡短的回答是肯定的,但正如您在其他答案中指出的那樣,您可能不希望維護良好的REST API。帶有默認路由的MVC Web API維護着您正在處理資源的基本REST概念,其中控制器代表資源。在您的其他問題你給的例子:你在哪裏希望在帳戶1234刪除便箋在這種情況下
DELETE /account/1234/note/321 <- delete note 321 on account 1234
您正在使用的資源是一個音符。這方面的一個更好的表示是使用查詢字符串,所以你這個例子API應該是這樣的:
DELETE /note/321?account=1234 <- delete note 321 on account 1234
這樣,你不需要亂用路由和很明顯,資源正在採取行動是使用過濾器的筆記。但是我還會質疑,如果note的id對於整個應用程序而言是唯一的,而不僅僅是針對特定帳戶,那麼是否需要添加此顯式過濾器(即where子句)。
* 4動作+重載假設GET/PUT/POST/DELETE ... – Paul 2012-07-12 19:56:35