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

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

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

可以查看最新的源码

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

  1. QuickWebApi:使用Lambada方式,完成对WebApi的开发和调用。

    QuickWebApi 目的:使用Lambada方式,完成对WebApi的开发和调用. 缘由:为了解耦服务和展现,将越来越多的使用WebApi提供各种服务:随着服务的细化,WebApi的接口将越来越多 ...

  2. .net WebApi使用swagger 美化接口文档

    本文将一步步演示如何用swagger美化WebApi接口文档,为接口文档添加接口名称说明,为请求参数和返回数据结构字段含义添加注释说明 一.为WebApi项目安装Swagger 首先我们新建一个Web ...

  3. Asp.net Core WebApi 使用Swagger做帮助文档,并且自定义Swagger的UI

    WebApi写好之后,在线帮助文档以及能够在线调试的工具是专业化的表现,而Swagger毫无疑问是做Docs的最佳工具,自动生成每个Controller的接口说明,自动将参数解析成json,并且能够在 ...

  4. WebAPI接口设计:SwaggerUI文档 / 统一响应格式 / 统一异常处理 / 统一权限验证

    为什么还要写这类文章?因为我看过网上很多讲解的都不够全面,而本文结合实际工作讲解了swaggerui文档,统一响应格式,异常处理,权限验证等常用模块,并提供一套完善的案例源代码,在实际工作中可直接参考 ...

  5. PCB WebAPI 接口测试工具与接口文档生成

    我们自己写WebAPI或调用对方系统提供的WebAPI时,测试WebAPI接口工具用哪些工具呢. 这里将3种WebAPI常用到的工具使用说明.主要是讲对第3种WebApiTestClientWebAp ...

  6. 怎样以快速样式的方式在word文档中生成以下多级自动编号

    本篇博文简单介绍一下在word中利用快速样式生成多级编号的方法. 一.自定义多级列表格式: 1.点击,开始--段落--多级列表--定义新的多级列表: 2.设置一级编号: (1)在"此级的编号 ...

  7. Asp.net MVC WebApi项目的自动接口文档及测试功能打开方法

    https://blog.csdn.net/foren_whb/article/details/78866133

  8. 发布WebApi项目时包含XML文档文件

    Open your publishprofile (*.pubxml) and include this code into "Project" element: <Item ...

  9. 手把手教你AspNetCore WebApi:Swagger(Api文档)

    前言 小明已经实现"待办事项"的增删改查,并美滋滋向负责前端的小红介绍Api接口,小红很忙,暂时没有时间听小明介绍,希望小明能给个Api文档.对于码农小明来说能不写文档就尽量不要写 ...

随机推荐

  1. 网页上弹出pop窗口实例,(document).height()与$(window).height()的区别

    #dvbg{background-color:#666666; position:absolute; z-index:99; left:0; top:0; display:none; width:10 ...

  2. C# 跨线程呼叫控制

    在C# 应用程序开发, 我们经常要UI作线程分开,防止界面停止响应.  同一时候我们又须要在工作线程中更新UI界面上的控件, 以下介绍几种经常使用的方法 阅读文件夹 线程间操作无效 第一种办法:禁止编 ...

  3. jquery扩展

    jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...

  4. Studio-Class Diagram

    UML Design Via Visual Studio-Class Diagram 用过几个建模设计工具,小的有staruml,大的有rational rose,EA.最后发现还是Visual St ...

  5. 【转】Android 常用 adb 命令总结

    原文地址:http://testerhome.com/topics/2565 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Andr ...

  6. C#中WebBrowser的使用

    原文:C#中WebBrowser的使用 其实网络上这类文章很多,我大致从头说说我自己的经验. 1.加入引用 在控件栏按右键,选择“添加/移除项”,选COM组件,选中“Microsoft Web Bro ...

  7. 从WebBrowser中取得Cookie 和 WebClient设置cookie!

    原文:从WebBrowser中取得Cookie 和 WebClient设置cookie! 从WebBrowser中取得Cookie 的代码 CookieContainer myCookieContai ...

  8. Linux学习笔记——怎样在交叉编译时使用共享库

    0.前言     在较为复杂的项目中会利用到交叉编译得到的共享库(*.so文件).在这样的情况下便会产生下面疑问,比如:     [1]交叉编译时的共享库是否须要放置于目标板中,假设须要放置在哪个文件 ...

  9. 探究Java中Map类

    Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.       Map的接口       Map---实现Map       Map.Entry--Map的内部 ...

  10. [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

    原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/S ...