enter image description here我想在azure移动服务中实现版本控制,因此我无法找到要配置的端点,并且根据版本号将获取代码。 现在网址是 HTTP:// {{主机}} /表/实体名称
但我的要求是 HTTP:// {{主机}} /表/ V1 /实体名称 要么 HTTP:// {{主机}} /表/ V2 /实体名称
所以请帮助我。
答案 0 :(得分: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();
}
}
<强>表/ 2.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。