2017-07-12 13 views
2

にバージョン管理を追加します。クライアントが特定のクエリ文字列パラメータ、たとえば/api/accounts/123?api-version=2を追加した場合に呼び出されるこのコントローラの別のバージョンを作成したいと思います。 は、私はこのようになりますコントローラで既存のASP.NET WebAPIのプロジェクトを持っている既存のWebAPIの

namespace WebSite.WebApi.Controllers.V2 
{ 
    [ApiVersion("2")] 
    [RoutePrefix("api/accounts")] 
    public class AgreementsController : ApiController 
    { 
     // GET ~/api/accounts/xxx?api-version=2 
     [Route("{accountId}")] 
     public IHttpActionResult Get(string accountId) => Ok($"Account #{accountId} from V2 controller"); 
    } 
} 

しかし、それはしていないようです:( api-version PARAMなし)最初のURLは、まだ私は別のコントローラを作り、このよう ApiVersion属性を使用して aspnet-api-versioning by Microsoftを使用すると考えていた初期のコントローラに

を導くべきですそのように働く。 GitHubのすべてのサンプルは、私のコントローラーを両方ともApiVersion属性で装飾し、両方のURLで明示的にバージョンを使用することをお勧めします:/api/accounts/123?api-version=1/api/accounts/123?api-version=2

しかし、最初のコントローラーのURLは、現在と同じままにする必要があります(/api/accounts/123)。 aspnet-api-versioning ライブラリでこれを実現する方法はありますか?または、このタスクを実行できる他のAPIバージョン管理ライブラリがありますか?これが可能である

答えて

2

、あなただけassume a version if you don't specify one in the configにバージョン管理フレームワークを伝える必要があります:

public static void Register(HttpConfiguration config) 
{ 
    config.AddApiVersioning(versioningConfig => 
    { 
     versioningConfig.AssumeDefaultVersionWhenUnspecified = true; 
    }); 

    //snip 
} 
関連する問題