zoukankan      html  css  js  c++  java
  • 在Abp中集成Swagger UI功能

    在Abp中集成Swagger UI功能

    1.安装Swashbuckle.Core包

    通过NuGet将Swashbuckle.Core包安装到WebApi项目(或Web项目)中。

    2.为WebApi方法添加注释,并生成xml

    • 在xxx.Application项目的接口声明文件中为各接口方法添加注释,如下图:
    • 编辑xxx.Application项目属性,设定在输出时生成XML文档文件

    3.在xxx.WebApi项目中配置Swagger

    修改xxxWebApiModule类,添加ConfigureSwaggerUi()方法,并在Initialize()方法的最后调用它。
    注意:要添加对Abp.Configuration.Startup、Swashbuckle.Application命名空间的引用。
    另外,不调用ResolveConflictingActions()方法来提供冲突解决办法将有可能遇到500错误。

    using System.Linq;
    using Abp.Configuration.Startup;
    using Swashbuckle.Application;
    
        [DependsOn(typeof(AbpWebApiModule), typeof(OrganizationApplicationModule))]
        public class OrganizationWebApiModule : AbpModule
        {
            public override void Initialize()
            {
                IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
    
                DynamicApiControllerBuilder
                    .ForAll<IApplicationService>(typeof(OrganizationApplicationModule).Assembly, "csci")
                    .Build();
    
                //配置跨域
                GlobalConfiguration.Configuration.EnableCors(new System.Web.Http.Cors.EnableCorsAttribute("*", "*", "*"));
                //配置输出json时不使用骆驼式命名法,按对象属性原名输出
                GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
                //集成Swagger UI
                ConfigureSwaggerUi();
            }
    
            private void ConfigureSwaggerUi()
            {
                var xmlFile = string.Format("{0}/bin/{1}.Application.xml", System.AppDomain.CurrentDomain.BaseDirectory, this.GetType().Namespace);
                Configuration.Modules.AbpWebApi().HttpConfiguration
                    .EnableSwagger(c =>
           ![](http://images2015.cnblogs.com/blog/19184/201706/19184-20170613111141275-1740289580.png)
    
             {
                        c.SingleApiVersion("v1", this.GetType().Namespace);
                        c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
                        if (System.IO.File.Exists(xmlFile)) { c.IncludeXmlComments(xmlFile); }
                    })
                    .EnableSwaggerUi();
            }
    
        }
    
    

    4.测试

    运行WEB项目,在浏览器中访问{项目网址}/swagger,即可见到动态生成的WebApi接口,并可以直接调试。

    注:如果见不到[Try it out!]按钮,点一下"Expand Operations"链接即可。

    参考:
    ABP理论学习之Swagger UI集成
    .net WebApi中使用swagger

  • 相关阅读:
    洛谷P1422 小玉家的电费
    洛谷P1425 小鱼的游泳时间
    洛谷P1421 小玉买文具
    洛谷P1001 A+B Problem
    洛谷P1000 超级玛丽游戏
    Android Hook框架adbi的分析(2)--- inline Hook的实现
    Android Apk加固的初步实现思路(dex整体加固)
    Android Hook框架adbi的分析(1)---注入工具hijack
    从苏宁电器到卡巴斯基(后传)第05篇:聊聊我对WannaCry产生的感慨
    Android APK程序的smali动态调试
  • 原文地址:https://www.cnblogs.com/wiseant/p/5507864.html
Copyright © 2011-2022 走看看