KSO-.NETCore中配置swagger分级

Swagger简介

  • 如今,前后端分离已经逐渐成为互联网项目一种标准的开发方式,前端与后端交给不同的人员开发,
    但是项目开发中的沟通成本也随之升高,这部分沟通成本主要在于前端开发人员与后端开发人员对WebAPI接口的沟通,Swagger UI
    就可以很好地解决,它可以动态生成Api接口文档,降低沟通成本,促进项目高效开发。

1 下载依赖

.net5以下的版本 需要下载
Install-Package Swashbuckle.AspNetCore -Version 5.0.0-rc4

net5 与net6 不需要下载,因为本身已经集成了

新建一个枚举类  ApiVersions 
基本代码如下:
public enum ApiVersions
    {
        系统管理 = 1,
        用户管理 = 2,
        V1 = 3,
        V2 = 5,
        V3 = 6, 
    }



2 在Startup=》ConfigureServices里面 增加下面代码

  services.AddSwaggerGen(c =>
            {
                
                typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
                {
                    c.SwaggerDoc(version, new OpenApiInfo()
                    {
                        Title = $"{version}:Swagger文档",
                        Version = version,
                        Description = $"Demo.Sewerage :  {version}  "
                    });
                });

                string basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径)
                string xmlPath = Path.Combine(basePath, "Demo.Web.xml");
                c.IncludeXmlComments(xmlPath, true);

            });

、、、、、、、、、、、、、、错误写法、、、、、、、、、、、、、、、、、、、、、、
我见到一些同学 这样写swagger分层,我真的很服气,要是分个很多层,
是不是要一直这样分下去,写个几十条????,很傻逼的写法,希望大家杜绝
 services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("xxx", new OpenApiInfo { Title = "xxx", Version = "v1" });
                c.SwaggerDoc("xxxxx1", new OpenApiInfo { Title = "xxx1", Version = "v1" });
  
                c.IncludeXmlComments(Path.Combine(System.AppContext.BaseDirectory, "Demo.Web.xml")); 
                 c.DocumentFilter<AnnotationsDocumentFilter>();
                c.DocInclusionPredicate((docName, apiDesc) =>
                {
                    return string.Equals(docName, apiDesc.GroupName, StringComparison.OrdinalIgnoreCase);
                });
            });
、、、、、、、、、、、、、、错误写法、、、、、、、、、、、、、、、、、、、、、、

3 在Startup=》Configure里面 增加下面代码

 app.UseSwaggerUI(c =>
            {
                if (env.IsDevelopment())
                { 
                    typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
                    {
                        c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"{version}");
                    });
                }
                else
                {
                    typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
                    {
                        c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"{version}");
                    }); 
                }
            });

3 在WEB层新建个 Demo.Web.xml

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>KSOAdmin.WebApi</name>
    </assembly>
    <members>

		<member name="M:KSOAdmin.WebApi.Controllers.HomeController.Index()">
			<summary>
				用来测试
			</summary>
			<returns>测试数据</returns>
		</member>
		<member name="T:KSOAdmin.WebApi.Controllers.HomeController">
			<summary>
				用来测试
			</summary>
		</member>
		<member name="M:KSOAdmin.WebApi.Controllers.Sys_MenuController.GetRoleMenuAsync()">
			<summary>
				获取角色的菜单
			</summary>
			<returns>返回菜单list</returns>
		</member>
		<member name="T:KSOAdmin.WebApi.Controllers.Sys_MenuController">
			<summary>
				菜单操作
			</summary>
		</member>
    </members>
</doc>

4 在控制器上面增加 特性标签

    [ApiExplorerSettings(GroupName = "系统管理")]

这个时候基本上加完了,但是会打开没有备注,这就很坑了,所以还需要一步

5 swagger上面显示控制器方法备注说明

右键webapi 打开属性在这里插入图片描述取消显示警告在这里插入图片描述

6 已经结束了,这样就实现配置了

在你的项目跑起来的地址后面加 swagger/index.html
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值