WeEngineWebApiModule.cs 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Web.Http;
  6. using Abp.Configuration.Startup;
  7. using Abp.Modules;
  8. using Abp.WebApi;
  9. using Swashbuckle.Application;
  10. using WeEngine.Application.Packages;
  11. using WeEngine.Application.RunEngine;
  12. using WeEngine.SwaggerUi;
  13. namespace WeEngine
  14. {
  15. [DependsOn(
  16. typeof(WeEngineRuntimeModule),
  17. typeof(AbpWebApiModule))]
  18. public class WeEngineWebApiModule : AbpModule
  19. {
  20. public override void Initialize()
  21. {
  22. IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
  23. Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder
  24. .For<IEngineRunAppService>(WeEngineConst.EngineRunServicePrefix).WithConventionalVerbs()
  25. .Build();
  26. Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder
  27. .For<IEnginePackageAppService>(WeEngineConst.EnginePackageServicePrefix).WithConventionalVerbs()
  28. .Build();
  29. Configuration.Modules.AbpWebApi().HttpConfiguration.Filters.Add(new HostAuthenticationFilter("Bearer"));
  30. ConfigureSwaggerUi();
  31. }
  32. public override void PostInitialize()
  33. {
  34. Configuration.Modules.AbpWebApi().HttpConfiguration.EnsureInitialized();
  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{WeEngineConst.Version}", "智慧推演引擎API文档");
  45. c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
  46. var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
  47. var filePath = Path.Combine(baseDirectory, "bin//WeEngine.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(), "WeEngine.SwaggerUi.Script.Swagger.js");
  59. b.InjectStylesheet(Assembly.GetExecutingAssembly(), "WeEngine.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. }