출처 : https://dotnetcoretutorials.com/2017/01/17/api-versioning-asp-net-core/
Install-Package Microsoft.AspNetCore.Mvc.Versioning
startup.cs
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) 등이 있으나…
역시 익숙한 방식은
[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";
}
혹은
[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 가능함

Leave a Reply