using System; using System.IO; using System.Linq; using System.Reflection; using System.Web.Http; using Abp.Configuration.Startup; using Abp.Modules; using Abp.WebApi; using Swashbuckle.Application; using WeEngine.Application.Packages; using WeEngine.Application.RunEngine; using WeEngine.SwaggerUi; namespace WeEngine { [DependsOn( typeof(WeEngineRuntimeModule), typeof(AbpWebApiModule))] public class WeEngineWebApiModule : AbpModule { public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder .For(WeEngineConst.EngineRunServicePrefix).WithConventionalVerbs() .Build(); Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder .For(WeEngineConst.EnginePackageServicePrefix).WithConventionalVerbs() .Build(); Configuration.Modules.AbpWebApi().HttpConfiguration.Filters.Add(new HostAuthenticationFilter("Bearer")); ConfigureSwaggerUi(); } public override void PostInitialize() { Configuration.Modules.AbpWebApi().HttpConfiguration.EnsureInitialized(); } /// /// 配置SwaggerUi /// private void ConfigureSwaggerUi() { Configuration.Modules.AbpWebApi().HttpConfiguration .EnableSwagger(c => { c.SingleApiVersion($"V{WeEngineConst.Version}", "智慧推演引擎API文档"); c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); var baseDirectory = AppDomain.CurrentDomain.BaseDirectory; var filePath = Path.Combine(baseDirectory, "bin//WeEngine.Api.xml"); //将注释的XML文档添加到SwaggerUI中 c.IncludeXmlComments(filePath); c.CustomProvider((p) => new SwaggerControllerDescProvider(p, filePath)); c.OperationFilter(); // 在接口类、方法标记属性 [HiddenApi],可以阻止【Swagger文档】生成 c.DocumentFilter(); }) .EnableSwaggerUi("doc/{*assetPath}", b => { b.DocumentTitle("API-智慧推演引擎"); b.InjectJavaScript(Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Script.Swagger.js"); b.InjectStylesheet(Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Css.Site.css"); //b.CustomAsset("jquery.min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.jquery.min.js"); //b.CustomAsset("jquery.slideto.min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.jquery.slideto.min.js"); //b.CustomAsset("jquery.wiggle.min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.jquery.wiggle.min.js"); //b.CustomAsset("jquery.ba-bbq.min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.jquery.ba-bbq.min.js"); //b.CustomAsset("handlebars.runtime-1.0.0.beta.6.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.handlebars.runtime-1.0.0.beta.6.js"); //b.CustomAsset("underscore-min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.underscore-min.js"); //b.CustomAsset("backbone-min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.backbone-min.js"); //b.CustomAsset("swagger.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.swagger.js"); //b.CustomAsset("swagger-ui.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.swagger-ui.js"); //b.CustomAsset("Swagger-iwb.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Script.Swagger.js"); //b.CustomAsset("Site.css", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Css.Site.css"); //b.CustomAsset("index", Assembly.GetExecutingAssembly(),"WeEngine.SwaggerUi.Html.index.html",true); }); } } }