IwbWebApiModule.cs 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Web.Http;
  6. using Abp.Application.Services;
  7. using Abp.Configuration.Startup;
  8. using Abp.Modules;
  9. using Abp.WebApi;
  10. using WeEngine.SwaggerUi;
  11. using WeApp.Configuration;
  12. using WeApp.SwaggerUi;
  13. using Swashbuckle.Application;
  14. namespace WeApp.Api
  15. {
  16. [DependsOn(typeof(AbpWebApiModule), typeof(WeAppApplicationModule))]
  17. public class WeAppWebApiModule : AbpModule
  18. {
  19. public override void Initialize()
  20. {
  21. IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
  22. var api = Configuration.Modules.AbpWebApi();
  23. api.DynamicApiControllerBuilder
  24. .ForAll<IApplicationService>(typeof(WeAppApplicationModule).Assembly, IwbConsts.ServicePrefix)
  25. .Build();
  26. api.HttpConfiguration.Filters.Add(new HostAuthenticationFilter("Bearer"));
  27. ConfigureSwaggerUi();
  28. }
  29. //public override void PostInitialize()
  30. //{
  31. //}
  32. /// <summary>
  33. /// 配置SwaggerUi
  34. /// </summary>
  35. private void ConfigureSwaggerUi()
  36. {
  37. Configuration.Modules.AbpWebApi().HttpConfiguration
  38. .EnableSwagger(c =>
  39. {
  40. c.SingleApiVersion($"V{IwbConsts.Version}", "智慧推演引擎API文档");
  41. c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
  42. var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
  43. var filePath = Path.Combine(baseDirectory, "bin//WeApp.Api.xml");
  44. //将注释的XML文档添加到SwaggerUI中
  45. c.IncludeXmlComments(filePath);
  46. c.CustomProvider((p) => new SwaggerControllerDescProvider(p, filePath));
  47. c.OperationFilter<HeaderAuthFilter>();
  48. // 在接口类、方法标记属性 [HiddenApi],可以阻止【Swagger文档】生成
  49. c.DocumentFilter<HiddenApiFilter>();
  50. })
  51. .EnableSwaggerUi("doc/{*assetPath}", b =>
  52. {
  53. b.DocumentTitle("API-智慧应急演练培训平台");
  54. b.InjectJavaScript(Assembly.GetExecutingAssembly(), "WeApp.SwaggerUi.Script.Swagger.js");
  55. b.InjectStylesheet(Assembly.GetExecutingAssembly(), "WeApp.SwaggerUi.Css.Site.css");
  56. //b.CustomAsset("jquery.min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.jquery.min.js");
  57. //b.CustomAsset("jquery.slideto.min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.jquery.slideto.min.js");
  58. //b.CustomAsset("jquery.wiggle.min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.jquery.wiggle.min.js");
  59. //b.CustomAsset("jquery.ba-bbq.min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.jquery.ba-bbq.min.js");
  60. //b.CustomAsset("handlebars.runtime-1.0.0.beta.6.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.handlebars.runtime-1.0.0.beta.6.js");
  61. //b.CustomAsset("underscore-min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.underscore-min.js");
  62. //b.CustomAsset("backbone-min.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.lib.backbone-min.js");
  63. //b.CustomAsset("swagger.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.swagger.js");
  64. //b.CustomAsset("swagger-ui.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Html.swagger-ui.js");
  65. //b.CustomAsset("Swagger-iwb.js", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Script.Swagger.js");
  66. //b.CustomAsset("Site.css", Assembly.GetExecutingAssembly(), "WeEngine.SwaggerUi.Css.Site.css");
  67. //b.CustomAsset("index", Assembly.GetExecutingAssembly(),"WeEngine.SwaggerUi.Html.index.html",true);
  68. });
  69. }
  70. }
  71. }