wiseant

在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

posted on 2016-05-19 11:16  Ant  阅读(3535)  评论(0编辑  收藏  举报

导航