2014-03-04 135 views
1

如何添加路由,以便我的控制器將工作類似於mvc web應用程序。Asp.net web api路由就像mvc站點

因爲他們已經配置了路線的默認方式將最終與你有這麼多的控​​制器。

我只是想有一個叫做驗證控制器,

,然後在我的web API能夠調用api/auth/loginapi/auth/logout等 由於使用默認的路由,我將不得不創造登錄和一個控制器註銷。

於是我有我的控制器像這樣:

public class AuthController : ApiController 
{ 

    [HttpPost] 
    public IEnumerable<string> Login() 
    { 
     return new string[] { "value1", "value2" }; 
    } 

    [HttpGet] 
    public HttpMessageHandler Logout() 
    { 
     return new HttpMessageHandler. 
    } 
} 

回答

2

默認的Web API路由使用HTTP方法來確定動作選擇。例如,POST api/auth將在AuthController上尋找名爲Post的操作。

如果你想使用RPC風格路由(如MVC),您需要將默認路由更改爲:

public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 

現在POST api/auth/login將尋找名爲LoginAuthController動作。

+0

然後,我只是指定Get,POST等作爲mvc中的過濾器類型? – Zapnologica

+0

你不能在MVC中做基於HTTP方法的路由,你必須指定動作名稱。您可以使用'[HttpGet/HttpPost]'過濾器來*限制Action可以處理的請求的類型,而不是實際上是否匹配路由。 –

+0

那麼如何在控制器中指定它是get還是Post?請參閱我的編輯 – Zapnologica