首页 > 其他分享 >swagger添加枚举注释

swagger添加枚举注释

时间:2023-02-25 10:34:17浏览次数:36  
标签:name Enum 注释 item 枚举 context swagger Type public

第一步,添加swagger过滤器

 1 public class EnumSchemaFilter : ISchemaFilter
 2     {
 3         public void Apply(OpenApiSchema model, SchemaFilterContext context)
 4         {
 5             if (context.Type.IsEnum)
 6             {
 7                 StringBuilder stringBuilder = new StringBuilder();
 8                 Enum.GetNames(context.Type)
 9                     .ToList()
10                     .ForEach(name =>
11                     {
12                         Enum e = (Enum)Enum.Parse(context.Type, name);
13                         var data = $"{name}({e.GetDesc()})={Convert.ToInt64(Enum.Parse(context.Type, name))}";
14 
15                         stringBuilder.AppendLine(data);
16                     });
17                 model.Description = stringBuilder.ToString();
18 
19 
20                 model.Type = context.Type.Name;
21                 model.Format = context.Type.Name;
22             }
23         }
24         
25     }
26 
27 public static class EnumExtensions
28     {
29         /// <summary>
30         /// 获取枚举信息(枚举名称、描述、值)
31         /// </summary>
32         /// <param name="value"></param>
33         /// <returns></returns>
34         public static string GetEnumDesc(this Enum value)
35         {
36             var type=value.GetType();
37             var names = Enum.GetNames(type).ToList();
38 
39             FieldInfo[] fields = type.GetFields();
40             foreach (FieldInfo item in fields)
41             {
42                 if (!names.Contains(item.Name))
43                 {
44                     continue;
45                 }
46                 if (value.ToString() != item.Name)
47                 {
48                     continue;
49                 }
50                 DescriptionAttribute[] EnumAttributes = (DescriptionAttribute[])item.
51             GetCustomAttributes(typeof(DescriptionAttribute), false);
52                 if (EnumAttributes.Length > 0)
53                 {
54                     return EnumAttributes[0].Description;
55                 }
56                 else
57                 {
58                     return "";
59                 }
60             }
61 
62             return "";
63         }
64     }
View Code

 

  第二步,注入

 1 public void ConfigureServices(IServiceCollection services)
 2         {
 3             services.AddControllers();
 4             services.AddSwaggerGen(c =>
 5             {
 6                 c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApplication2", Version = "v1" });
 7 
 8                 c.SchemaFilter<EnumSchemaFilter>();
 9             });
10         }
View Code

 

标签:name,Enum,注释,item,枚举,context,swagger,Type,public
From: https://www.cnblogs.com/XL-Tommy/p/17153889.html

相关文章

  • java 枚举使用
    /***埋点模块枚举*@authorhuang*/publicenumModelEnum{PROCESS_CONTROL("流程管控",10),TASK_CENTER("任务中心",20),QHSE("QHSE管理",30)......
  • java后台接收参数为枚举,postman的json如何传入
    使用postman测试接口,其中一个参数为枚举类型,如何传入参数?1枚举类型:publicenumUserCourseOrderSourceType{USER_BUY(1,"用户下单购买"),OFFLINE_BUY(2,"后台......
  • java枚举Enum与Enumeration源码详解
    java枚举Enum与Enumeration源码详解类的定义publicabstractclassEnum<EextendsEnum<E>>implementsComparable<E>,Serializable{}属性定义privatefinalStr......
  • CSS 注释
     注释是用来解释你的代码,并且可以随意编辑它,浏览器会忽略它。CSS注释以 /* 开始,以 */ 结束,实例如下:实例/*这是个注释*/p{text-align:center;/*这是另......
  • 智能合约Solidity去除空行与所有注释代码Python脚本
    importredefremoveComments(string):pattern=r"(\".*?\"|\'.*?\')|((?s)/\*.*?\*/)|(//[^\r\n]*$)"regex=re.compile(pattern,re.MULTILINE|re.DOT......
  • Java 扫描枚举类并获取属性
    Java扫描枚举类并获取属性文章目录​​Java扫描枚举类并获取属性​​​​第一步:在pom.xml下导入hutool和commons-lang3​​​​第二步:写一个接口以规范枚举的属性​......
  • Java数据类型,变量命名的标准 (AJCG),分支和循环,文档注释的要求
    Java数据类型,变量,分支和循环Java中的八大基本数据类型数据类型占用字节数数据范围byte1B-128~127short2B-32768~32767int4B-2^31~2^31-1......
  • 枚举类型的flags特性
    flags特性,在编写枚举类型时,上面附上Flags特性后,用该枚举变量是既可以像整数一样进行按位的“|”或者按位的“&”操作了,可以参考https://www.cnblogs.com/GreenLeaves/p/67......
  • Springboot 整合 Swagger3
    Springboot整合Swagger环境版本服务名称版本号Springboot2.7.8(GA)Java1.8导入依赖方式一:<dependency><groupId>io.springfox</groupId>......
  • vim常用命令之多行注释和多行删除
    vim中多行注释和多行删除命令,这些命令也是经常用到的一些小技巧,可以大大提高工作效率。 1.多行注释: 1.首先按esc进入命令行模式下,按下Ctrl+v,进入列(也叫区块)模式;......