Asp.net-Mvc

如何為 MVC 4 Api 製作更多 MapHttpRoutes

  • September 4, 2014

我的 API atm 有 2 個 API 路由,但我想添加更多,而且我這樣做的方式似乎相互覆蓋,所以在我粘貼的程式碼中,只有CreateUser路由有效。

public static void RegisterRoutes(RouteCollection routes)
{
   routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
   routes.MapHttpRoute(
       name: "CreateUser",
       routeTemplate: "api/{controller}/{cUser}",
       defaults: new
       {
           controller = "User",
           action = "CreateUser",
           cUser = RouteParameter.Optional
       });
   routes.MapHttpRoute(
       name: "AllGames",
       routeTemplate: "api/{controller}/{playerId}",
       defaults: new
       {
           controller = "Game",
           action = "GetAllGames",
           playerId = RouteParameter.Optional
       });
   routes.MapRoute(
       name: "Default",
       url: "{controller}/{action}/{id}",
       defaults: new
       {
           controller = "Home",
           action = "Index",
           id = UrlParameter.Optional
       });
}

我相信api/{controller}/{cUser}“CreateUser”路由中的模式與其他控制器操作匹配,因為它具有更通用的模式。在路由中使用特定的控制器名稱作為“使用者”(api/User/{cUser})和“遊戲”(api/Game/{playerId})。更具體的路線應該在頂部,更通用的在底部。

routes.MapHttpRoute(
   name: "CreateUser",
   routeTemplate: "api/User/{cUser}",
   defaults: new
   {
       controller = "User",
       action = "CreateUser",
       cUser = RouteParameter.Optional
   }
);

routes.MapHttpRoute(
   name: "AllGames",
   routeTemplate: "api/Game/{playerId}",
   defaults: new
   {
       controller = "Game",
       action = "GetAllGames",
       playerId = RouteParameter.Optional
   }
);

引用自:https://stackoverflow.com/questions/10766157