在Abp中集成Swagger UI功能

2023-05-26,,

在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

在Abp中集成Swagger UI功能的相关教程结束。

《在Abp中集成Swagger UI功能.doc》

下载本文的Word格式文档,以方便收藏与打印。