• QuickWebApi2:使用Lambda方式,完成对WebApi的开发和调用-文档的生成


    QuickWebApi:使用Lambda方式,完成对WebApi的开发和调用

    上一篇完成了主要的功能,本次修订主要重构了对接口文档的生成规范,使之可读性更佳,甚至可以作为接口文档进行发布(当然,在部分细节上还不能满足接口文档的需要,不过对于开发者而言,已经足够)。

    接口文档的描述增加了如下内容:

    1:规范性,如缩进、分割、描述分类等

    2:增加了对参数类型的说明

    3:增加了输出结果的说明

    4:增加了对于复杂的参数或结果类型的说明

    为了完成以上的功能,在原有的基础上增加了一些功能代码:

    首先是QuickWebApiAttribute标签增加了对输出结果类型的描述result_type,为了保证兼容性,所有增加的字段默认值均为null

    public QuickWebApiAttribute(string service, string route, MethodType methodtype = MethodType.NONE, string name = null, string comment = null, Type result_type = null)
    

     在原有的类中增加部分说明属性

        public class WebApiMethod
        {
            public WebApiMethod() { Params = new List<WebApiMethodParam>(); }
    
            public string Code { get; set; }
            public MethodType Method { get; set; }
            public string Action { get; set; }
            public string Name { get; set; }
            public string Comment { get; set; }
    
            [NonSerialized]
            internal List<WebApiMethodParam> Params;    //新增,保存接口参数信息
    
            [NonSerialized]
            internal Type OutputType;    //新增,保存接口输出类型信息
    
            public string ParamsDesc()    //新增
            { 
                if (Params.Count == 0) return "无参数";
                StringBuilder sb = new StringBuilder();
                foreach (var p in Params)
                {
                    sb.AppendFormat("{0}:{1},{2},{3};", p.Name, p.TypeName, p.DefaultValue, p.Desc);
                }
                return sb.ToString();
            }
        }


        public class WebApiMethodParam
        {
            public string Desc { get; set; }
            public string TypeName { get; set; }
            public string Name { get; set; }
            public string DefaultValue { get; set; }

            public override string ToString()
            {
                return string.Format("{0}:{1},{2},{3};", Name, TypeName, DefaultValue, Desc);

            }
        }

     然后是对说明进行解析,在代码上也没有什么新鲜的创意,方式主要是通过反射来获取,因为该代码只会在程序运行伊始执行一次,所以性能上没有做过多考量;只是在收集接口信息的时候,同时把相关的说明信息一并收集,然后为每个接口生成配置文件和说明文件。

    由于代码量较大,且无新意,纯属频繁的反射、循环 和一些结构化后的字符串拼装,不在熬述。

    可以查看最新的源码

  • 相关阅读:
    6-stm32 滴答定时器(delay不带中断延时)
    5-stm32 滴答定时器(delay中断延时)
    4- stm32 gpio重映射
    3- stm32 gpio寄存器
    2-stm32 gpio位带
    Linux Command
    DIV+CSS规范命名
    JS事件报错之Cannot set property 'onclick' of null
    创建对象的三种方式
    密码的显示和隐藏
  • 原文地址:https://www.cnblogs.com/winhu/p/webapi.html
Copyright © 2020-2023  润新知