72 lines
3.2 KiB
C#
72 lines
3.2 KiB
C#
|
using System;
|
|||
|
using System.Web.Http;
|
|||
|
using WebActivatorEx;
|
|||
|
using MyCode.Project.WebApi;
|
|||
|
using Swashbuckle.Application;
|
|||
|
using MyCode.Project.WebApi.SwaggerExtensions;
|
|||
|
using System.Web.Http.Description;
|
|||
|
using MyCode.Project.WebApi.App_Start;
|
|||
|
|
|||
|
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
|
|||
|
|
|||
|
namespace MyCode.Project.WebApi
|
|||
|
{
|
|||
|
public class SwaggerConfig
|
|||
|
{
|
|||
|
public static void Register()
|
|||
|
{
|
|||
|
var thisAssembly = typeof(SwaggerConfig).Assembly;
|
|||
|
|
|||
|
GlobalConfiguration.Configuration
|
|||
|
.EnableSwagger(c =>
|
|||
|
{
|
|||
|
// <20><><EFBFBD>ö<EFBFBD>API<50>汾
|
|||
|
c.MultipleApiVersions(ResolveAreasSupportByRouteConstraint, (vc) =>
|
|||
|
{
|
|||
|
vc.Version("Admin", "ZHMD<4D><44>̨API");
|
|||
|
vc.Version("Wechat", "ZHMD<44><CEA2>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>API");
|
|||
|
vc.Version("Member", "ZHMD<4D><44>ԱС<D4B1><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>API");
|
|||
|
vc.Version("v1", "ZHMDͨ<44><CDA8>API", true);
|
|||
|
vc.Version("ZhiBo", "ֱ<><D6B1>API");
|
|||
|
});
|
|||
|
|
|||
|
// c.SingleApiVersion("v1", "MyCode.Project.WebApi");
|
|||
|
//c.ApiKey("Authorization").Description("OAuth2 Auth").In("header").Name("Bearer ");
|
|||
|
c.ApiKey("Authorization").Description("OAuth2 Auth").In("header").Name("");
|
|||
|
c.IncludeXmlComments(string.Format("{0}/bin/MyCode.Project.WebApi.xml", AppDomain.CurrentDomain.BaseDirectory));
|
|||
|
c.IncludeXmlComments(string.Format("{0}/bin/MyCode.Project.Domain.xml", AppDomain.CurrentDomain.BaseDirectory));
|
|||
|
c.IncludeXmlComments(string.Format("{0}/bin/MyCode.Project.Infrastructure.xml", AppDomain.CurrentDomain.BaseDirectory));
|
|||
|
c.OperationFilter<AddAuthorizationHeaderParameterOperationFilter>();
|
|||
|
c.OperationFilter<AddUploadOperationFilter>();
|
|||
|
c.DocumentFilter<AuthTokenOperation>();
|
|||
|
|
|||
|
c.DocumentFilter<SwaggerAreasSupportDocumentFilter>();
|
|||
|
|
|||
|
c.ApiKey("Authorization").Description("OAuth2 Auth").In("header").Name("Authorization");
|
|||
|
})
|
|||
|
.EnableSwaggerUi(c =>
|
|||
|
{
|
|||
|
c.EnableApiKeySupport("Authorization", "header");
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
|||
|
/// </summary>
|
|||
|
/// <param name="apiDescription"></param>
|
|||
|
/// <param name="targetApiVersion"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private static bool ResolveAreasSupportByRouteConstraint(ApiDescription apiDescription, string targetApiVersion)
|
|||
|
{
|
|||
|
if (targetApiVersion == "v1")
|
|||
|
{
|
|||
|
return apiDescription.Route.RouteTemplate.StartsWith($"api{MyCode.Project.Domain.Config.SystemConfig.ApiVersion}" + "/{controller}");
|
|||
|
}
|
|||
|
|
|||
|
var routeTemplateStart = $"api{MyCode.Project.Domain.Config.SystemConfig.ApiVersion}/" + targetApiVersion;
|
|||
|
|
|||
|
return apiDescription.Route.RouteTemplate.StartsWith(routeTemplateStart, StringComparison.CurrentCultureIgnoreCase);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|