根据您的要求,我跟着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。
感谢您的回复。无法使用此方法进行路由,因为我正在使用Azure移动应用程序(AMS)项目。 –