3

ASP.NET MVC の異なるコントローラー内で API の複数のバージョンを宣言したいと考えています。このようなことは可能ですか?

routes.MapRoute(
    "Default", // Route name
    "API/{version}/{action}/{id}", 
        new { 
             controller = "APIv{version}", 
             action = "Index", 
             id = UrlParameter.Optional 
        } 
    );

また

routes.MapRoute(
    "Default", // Route name
    "API/{version}/{action}/{id}", 
        new { 
             controller = "APIv" + version, 
             action = "Index", 
             id = UrlParameter.Optional 
        } 
    );
4

1 に答える 1

4

異なるAPIバージョンを異なる領域に移動することで実装しました

バージョン1:

 public class AreaRegistration : PortableAreaRegistration
    {
        public override string AreaName
        {
            get { return "Api.v1"; }
        }

        public override void RegisterArea(System.Web.Mvc.AreaRegistrationContext context)
        {
            context.MapHttpRoute(
                    name: "Api.v1_Default",
                    routeTemplate: "api/v1/{company}/{action}",
                    defaults: new { controller = "Company", action = "Employees" }
            );
        }
    }

バージョン1.1:

  public class AreaRegistration : PortableAreaRegistration
        {
            public override string AreaName
            {
                get { return "Api.v1.1"; }
            }

            public override void RegisterArea(System.Web.Mvc.AreaRegistrationContext context)
            {
                context.MapHttpRoute(
                        name: "Api.v1_1_Default",
                        routeTemplate: "api/v1.1/{company}/{action}",
                        defaults: new { controller = "Company", action = "Employees" }
                );
            }
        }

MvcContrib の PortableAreaRegistration が使用されることに注意してください。

于 2013-04-12T15:51:52.757 に答える