如何在Azure移动服务中实现版本控制

时间:2017-10-28 10:34:38

标签: azure-mobile-services

enter image description here我想在azure移动服务中实现版本控制,因此我无法找到要配置的端点,并且根据版本号将获取代码。 现在网址是 HTTP:// {{主机}} /表/实体名称

但我的要求是 HTTP:// {{主机}} /表/ V1 /实体名称  要么 HTTP:// {{主机}} /表/ V2 /实体名称

所以请帮助我。

1 个答案:

答案 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