你的位置:首页 > ASP.net教程

[ASP.net教程]ABP项目中使用Swagger生成动态WebAPI


本文是根据角落的白板报的《使用ABP实现SwaggerUI,生成动态webapi》一文的学习总结,感谢原文作者角落的白板报。

 

1 安装Swashbuckle.core

1.1 选择WebApi项目,右键“管理NuGet程序包”。

 

1.2 输入 “Swashbuckle.core”,搜索。选择Swashbuckle.core,右边点击安装。

 

 2 配置Swashbuckle

 2.1 打开WebApi项目中的DemoWebApiModule.cs文件。创建ConfigureSwaggerUI()方法,并在Initialize()中调用。

public void ConfigureSwaggerUI(){  Configuration.Modules.AbpWebApi().HttpConfiguration    .EnableSwagger(c =>    {      c.SingleApiVersion("v1", "DemoAPI文档");      c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());    })    .EnableSwaggerUi();}

public override void Initialize(){  IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());  Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder    .ForAll<IApplicationService>(typeof(DemoApplicationModule).Assembly, "app")    .Build();  Configuration.Modules.AbpWebApi().HttpConfiguration.Filters.Add(new HostAuthenticationFilter("Bearer"));  ConfigureSwaggerUI();}

 

2.2 运行项目。

运行项目,打开地址“/swagger/ui/index”,即可查看WebApi。

 

3 增强WebApi文档

3.1 打开Application项目的属性设置,勾选“

 

 3.2 将application层中的注释添加到SwaggerUI中。

 1 public void ConfigureSwaggerUI() 2 { 3   Configuration.Modules.AbpWebApi().HttpConfiguration 4     .EnableSwagger(c => 5     { 6       c.SingleApiVersion("v1", "DemoAPI文档"); 7       c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); 8  9       //将application层中的注释添加到SwaggerUI中10       var baseDirectory = AppDomain.CurrentDomain.BaseDirectory;11 12       var commentsFileName = "Bin//Demo.Application.";13       var commentsFile = Path.Combine(baseDirectory, commentsFileName);14       //将注释的15       c.Include16     })17     .EnableSwaggerUi();18 }

3.3 在API接口方法中添加注释后,SwaggerUI就会显示对应的注释信息。以Role为例。

/// <summary>/// 修改角色权限信息接收的DTO/// </summary>public class UpdateRolePermissionsInput : IInputDto{/// <summary>/// 角色ID/// </summary>[Range(1, int.MaxValue)]public int RoleId { get; set; }/// <summary>/// 获取权限名称列表/// </summary>[Required]public List<string> GrantedPermissionNames { get; set; }}