zoukankan      html  css  js  c++  java
  • 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);

            }
        }

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

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

    可以查看最新的源码

  • 相关阅读:
    JVM — 类加载机制
    java 异常处理
    (前篇:NIO系列 推荐阅读) Java NIO 底层原理
    (六:NIO系列) 相关设计模式
    (五:NIO系列) Reactor模式
    (四:NIO系列) Java NIO Selector
    (三:NIO系列) Java NIO Channel
    (二:NIO系列) Java NIO Buffer
    (一:NIO系列)JAVA NIO 简介
    java 线程池(线程的复用)
  • 原文地址:https://www.cnblogs.com/winhu/p/webapi.html
Copyright © 2011-2022 走看看