2017-10-28 156 views

回答

0

根据您的要求,我跟着Microsoft/aspnet-api-versioning检查azure移动应用项目的版本。你可以参考下面的细节来达到你的目的。

安装Microsoft.AspNet.WebApi.Versioning包。

Startup.MobileApp.cs启用API版本如下:

public static void ConfigureMobileApp(IAppBuilder app) 
{ 
    HttpConfiguration config = new HttpConfiguration(); 

    var constraintResolver = new DefaultInlineConstraintResolver() 
    { 
     ConstraintMap = 
      { 
       ["apiVersion"] = typeof(ApiVersionRouteConstraint) 
      } 
    }; 
    config.AddApiVersioning(); 
    config.MapHttpAttributeRoutes(constraintResolver); 

    //your mobile configuration 

    app.UseWebApi(config); 
} 

为了您TableController,你可以如下定义它:

表/ 1.0 /的TodoItem

[ApiVersion("1.0")] 
[RoutePrefix("tables/v{version:apiVersion}/todoitem")] 
public class TodoItemController : TableController<ToDoItem> 
{ 
    private MobileServiceContext context; 
    protected override void Initialize(HttpControllerContext controllerContext) 
    { 
     base.Initialize(controllerContext); 
     context = new MobileServiceContext(); 
     DomainManager = new EntityDomainManager<ToDoItem>(context, Request); 
    } 

    [Route] 
    // GET tables/v{version}/todoitem 
    public IQueryable<ToDoItem> GetAllTodoItems() 
    { 
     return Query(); 
    } 
} 

tables/v2.0/todoitem

[ApiVersion("2.0")] 
[ControllerName("TodoItem")] 
[RoutePrefix("tables/v{version:apiVersion}/todoitem")] 
public class TodoItemV2Controller : TableController<ToDoItem> 
{ 
    private MobileServiceContext context; 
    protected override void Initialize(HttpControllerContext controllerContext) 
    { 
     base.Initialize(controllerContext); 
     context = new MobileServiceContext(); 
     DomainManager = new EntityDomainManager<ToDoItem>(context, Request); 
    } 

    [Route] 
    // GET tables/v{version}/todoitem 
    public IQueryable<ToDoItem> GetAllTodoItems() 
    { 
     return Query(); 
    } 
} 

有关更多详细信息,请参阅ASP.NET API Versioning

+0

感谢您的回复。无法使用此方法进行路由,因为我正在使用Azure移动应用程序(AMS)项目。 –