2012-10-01 87 views
2

默認MVC4應用程序將拿出一個RouteConfig類看起來是這樣的:爲什麼一個新的MVC4項目帶有默認映射的WebApi路由?

public static void RegisterRoutes(RouteCollection routes) { 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

我的問題是,爲什麼MapHttpRoute?這是爲新的WebApi功能設置路由,但我沒有選擇WebApi項目,只是一個正常的MVC4項目。一般的MVC4項目似乎都不需要WebApi。

回答

4

我是MVC和WebApi背後的微軟開發人員之一。我們爲模板中的兩種技術註冊路由的原因是,我們希望讓您更輕鬆地開始將Web API控制器添加到項目中。就像MVC一樣,如果沒有註冊路線,那麼你的Controller類是不會工作的。通過使用這兩條路線,我們可以讓入門體驗更友好一些。

2

ASP.NET Web API是ASP.NET MVC 4的一個特性,它是ASP.NET Webstack(of love;)的一部分;其背後的想法是,如果你想爲你的RESTFUL使用HTTP強類型模型服務的支持是開箱即用的。而應該成爲用「常規」控制器處理RESTFUL請求的首選方式。

當您選擇一個Web API項目模板時,MVC唯一的變化就是在項目文件樹結構中。但是,由於Web API是MVC的一部分,所以對常規MVC項目的依賴關係的引用仍然存在。

如果ASP.NET Web API的路由註冊困擾您,您可以隨時刪除它。

+1

但肯定不是所有的網站都需要一個RESTful API?從盒子裏支持它不是矯枉過正嗎? – Jez