续 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);

        }    }

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

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

可以查看最新的源码

转载于:https://www.cnblogs.com/winhu/p/webapi.html

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

  1. swagger2的使用和swagger2markup离线文档的生成(最简单的方式)

    文章目录 1. 如何使用 1.1 引入依赖 1.2 创建swagger2配置类 1.3 在controller上编写我们的接口信息 1.4 访问http://ip:port/swagger-ui.ht ...

  2. .net webapi导出html,C#(.Net Core WebAPI)之API文档的生成(Swagger)

    标签:一 : 安装Swagger 搜Swashbuckle.AspNetCore 在NuGet 中,安装 Swashbuckle.AspNetCore : 我使用的版本为 : 5.0.0-rc2 二 ...

  3. 计算机文件保存方式,Word文档的三种保存方式

    word中有多种保存文档的方式.可保存当前处理的活动文档 (活动文档:正在处理的文档.在 Microsoft word 中键入的文本或插入的图形将出现在活动文档中.活动文档的标题栏是突出显示的.),无 ...

  4. XML文档定义有几种方式?它们之间有何本质区别?解析XML文档有哪几种方式?

    XML文档定义方式:有两种定义形式,dtd文档类型定义和schema模式 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的) 普通区别: 1.s ...

  5. 服务器备用电源的原理,备用电源的备用方式 备自投的基本要求 工作原理参考文档...

    <备用电源的备用方式 备自投的基本要求 工作原理参考文档>由会员分享,可在线阅读,更多相关<备用电源的备用方式 备自投的基本要求 工作原理参考文档(11页珍藏版)>请在人人文库 ...

  6. Java - XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net XML文档定义分为DTD和Schema两种形式,二者 ...

  7. 粤嵌学习打卡第19天(基于DOM方式解析、生成XML文档)

    今天我们来聊聊基于DOM方式实现解析和生成XML文档 一般web开发的xnl文档: 基于DOM处理XML文档 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SIQAET ...

  8. 计算机考试文档保存,Word文档的保存也有学问三种方式任你选

    Word文档的保存也是一门学问.Word中有多种保存文档的方式.可保存当前处理的活动文档 (活动文档:正在处理的文档.在 Microsoft Word 中键入的文本或插入的图形将出现在活动文档中.活动 ...

  9. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?

    XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? XML文档定义分为DTD和Schema两种形式,二者都是对XML语法的约束.其本质区别在于Schema本身也是一个XML文 ...

  10. 第十二节:WebApi自动生成在线Api文档的两种方式

    一. WebApi自带生成api文档 1. 说明 通过观察,发现WebApi项目中Area文件夹下有一个HelpPage文件夹,如下图,该文件夹就是WebApi自带的生成Api的方式,如果该文件夹没了 ...

最新文章

  1. HTML 基础知识(特殊字符的转义)
  2. 【Ubuntu】dpkg: 处理软件包 XXXX (--configure)时出错解决方法
  3. 音视频技术开发周刊 | 173
  4. 任务管理器启动资源管理器
  5. dll domodal运行时异常_软件运行异常时的多种排查思路与方法
  6. MFC开发IM-第十七篇、CString TCHAR的互相转换
  7. [PVE]解决 ProXmoX VE升级 apt-get update 报错的问题
  8. Android Fragment(一)
  9. 打印机无法打印测试页是什么原因
  10. 遇害的中国留美博士生,被追授博士学位!导师帮他完成了学业!
  11. Spring Boot为什么不需要额外安装Tomcat?
  12. .NET 2.0 调用FFMPEG
  13. 超声波清洗机是什么?
  14. python爬取拉勾网_python爬取拉勾网职位数据
  15. 基于Proteus学习单片机系列(三)——按键
  16. [EventKit] Error getting default calendar for new reminders: Error Domain=EKCADErrorDomain Code=1013
  17. 亚马逊IC-ID/ISED认证需要提供什么资料
  18. 【Unity性能优化】静态资源优化——Audio优化
  19. jmeter使用BeanShell Sampler测试自己写的java接口(一)
  20. 上市公司绿色专利申请数据(绿色创新数据1)(1990-2021)

热门文章

  1. jQuery实现输入框聚焦,键盘上下键选择城市
  2. ios之alloc和init
  3. 中国武术和泰拳的对抗史
  4. spark性能调优:资源优化
  5. 半夜偷看“不良网站”,删除历史记录也没用,“坏影响”已悄然发生
  6. 面试官:你能说清楚分布式锁,进程锁,线程锁的区别吗?
  7. 来,通过 Excel 来认识神器——POI
  8. 年轻时不多闯闯,老了拿什么来吹
  9. 开发者生态与双引擎:华为的雄心壮志!
  10. android 嵌入web容器,Github最火开源项目-H5和Android通信容器BridgeWebView的使用