보관함

dotnet core api version

출처 : 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

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.