2017-10-28 3 views
0

enter image description here Azureモバイルサービスでバージョン管理を実装したいので、構成するエンドポイントを見つけることができず、バージョン番号に基づいてコードを取得します。 は今URLは です。http:// {{ホスト}} /テーブル/エンティティ名Azure Mobileサービスでバージョン管理を実装する方法

が、私の要件は です。http:// {{ホスト}} /テーブル/ V1 /エンティティ名 または ます。http:// { {host}}/tables/v2/EntityName

このように私を助けてください。

答えて

0

あなたの要件によると、Microsoft/aspnet-api-versioningに続いて、azureモバイルアプリプロジェクトのバージョンを確認しました。あなたの目的を達成するために、以下の詳細を参照することができます。

Microsoft.AspNet.WebApi.Versioningパッケージをインストールします。

テーブル/ v1.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(); 
    } 
} 
を:あなたの TableControllerについては

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); 
} 

を次のように、あなたはそれを定義することができます。

次のようにあなたのStartup.MobileApp.csにAPIのバージョン管理を有効にします

テーブル/ 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 Mobile App(AMS)プロジェクトを使用しているので、この方法でルーティングすることはできません。 –

関連する問題