출처 : https://dotnetcoretutorials.com/2017/01/17/api-versioning-asp-net-core/
1 |
Install-Package Microsoft.AspNetCore.Mvc.Versioning |
startup.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public void ConfigureServices(IServiceCollection services) { // ApiVersioning을 추가 services.AddApiVersioning(options => { // 클라이언트에 Api 버전을 통지 options.ReportApiVersions = true; // 이것이 없으면 클라이언트 측에서 에러가 나온다 options.AssumeDefaultVersionWhenUnspecified = true; // Api의 default 버전을 1.0으로 설정 options.DefaultApiVersion = new ApiVersion(1, 0); }); } |
출처에 보면 여러가지 방식(Url Query Based Versioning, URL Path Based Versioning, Http Header Based Versiong) 등이 있으나…
역시 익숙한 방식은
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[ApiVersion("1.0")] [Route("api/{version:apiVersion}/home")] public class HomeV1Controller : Controller { [HttpGet] public string Get() => "v1"; } [ApiVersion("2.0")] [Route("api/{version:apiVersion}/home")] public class HomeV2Controller : Controller { [HttpGet] public string Get() => "v2"; } |
혹은
1 2 3 4 5 6 7 8 9 10 11 12 |
[ApiVersion("1.0")] [ApiVersion("2.0")] [Route("v{version:apiVersion}/[controller]")] public class HomeController : Controller { [HttpGet] public string Get() => "v1"; // Api 버전을 덮어 쓰기 [HttpGet, MapToApiVersion("2.0")] public string GetV2() => "v2"; } |
/v1/Home, /v2/Home 의 형식으로 call 가능함