Asp.Net WebApi swagger에 버전 제어 추가
참조 버전 제어 패키지
버전 제어 코드 추가
다음과 같이 App 수정Start의 WebApiConfig 파일
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new ApiExceptionFilter());
config.MessageHandlers.Add(new WrapperHandler());
// Web API
config.AddApiVersioning(o =>
{
o.AssumeDefaultVersionWhenUnspecified = true;// action 1.0
o.ReportApiVersions = true;//
o.ApiVersionReader = ApiVersionReader.Combine(new HeaderApiVersionReader("api-version"), new QueryStringApiVersionReader("api-version"));// Header QueryString api
o.DefaultApiVersion = new ApiVersion(1, 0);//
});
var apiExplorer = config.AddVersionedApiExplorer(
options =>
{
options.GroupNameFormat = "'v'VVV";
// note: this option is only necessary when versioning by url segment. the SubstitutionFormat
// can also be used to control the format of the API version in route templates
options.SubstituteApiVersionInUrl = true;
});
// Web API
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// swagger
SwaggerConfig.Register(config, apiExplorer);
}
swagger 패키지 참조
swagger를 멀티버전api로 수정
swagger 패키지를 참조하면 자동으로 AppStart는 다음과 같은 코드의 일부를 수정해야 하는 SwaggerConfig 파일을 추가합니다.
// swagger, Web.Http.Description.VersionedApiExplorer apiExplorer
//[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
namespace WebApplication1
{
public class SwaggerConfig
{
public static void Register(HttpConfiguration Configuration, Microsoft.Web.Http.Description.VersionedApiExplorer apiExplorer)
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
Configuration
.EnableSwagger(c =>
{
c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
c.MultipleApiVersions(
(apiDescription, version) => apiDescription.GetGroupName() == version,
info =>
{
foreach (var group in apiExplorer.ApiDescriptions)
{
// , vs SwaggerConfig, SwaggerConfig , SwaggerConfig ,
var description = "A sample application with Swagger, Swashbuckle, and API versioning.";
if (group.IsDeprecated)
{
description += " This API version has been deprecated.";
}
info.Version(group.Name, $"Create Wordreprot API {group.ApiVersion}");
}
});
// XML
var basePath1 = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);// ( , ( ) , )
var xmlComments = Directory.GetFiles(basePath1, "*.xml", SearchOption.AllDirectories).ToList();
foreach (var xmlComment in xmlComments)
{
c.IncludeXmlComments(xmlComment);
}
#region MyRegion
#endregion
// Controller API
//c.DocumentFilter();
})
.EnableSwaggerUi(
swagger =>
{
// api , ,
swagger.EnableDiscoveryUrlSelector();
}
);
}
}
}
controller에 버전 표시
이제 controller나 action에 버전 표시를 추가해서 버전을 표시할 수 있습니다. 기본 1.0이 없으면 기본 버전 설정은 코드에 있습니다.
public class Controller1 : ApiController
{
[ApiVersion("1.0")]
public async Task Get(){
returt "1.0"
}
public async Task Get2(){
returt "1.0"
}
}
public class Controller2 : ApiController
{
[ApiVersion("2.0")]
public async Task Get(){
returt "2.0"
}
}
요청 보내기
요청에 버전 번호 표시를 하고 버전이 없으면 기본 1.0입니다. 요청은query 매개 변수나 헤더 방식을 통해 가능합니다. 이름은api-version입니다. 이 이름은 상기 코드에서 설정된 것입니다.
이 가능하다, ~할 수 있다,...
참고 자료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.