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

时间:2023-03-09 01:40:40
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);         }
    }

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

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

可以查看最新的源码