WePlatformWebApiModule.cs 4.3 KB

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