ApiDoc 一键生成注释
本文来自网易云社区。
作者:盛国存
背景
我们日常在使用ApiDoc维护管理api文档,提高了api文档的整体维护性。但在老旧接口中,补充接口注解无疑是一次繁重的体力劳动。仔细查看,大多数接口的格式 其实是相似的,那么,是否可以将体力活做的技术一些?
答案是sure,只需要三步。分析log,构建接口数据,生成APIDoc。
过程阐述
下面以个人开发机器下的某个测试接口为例,阐述整个过程:
在实际的业务中可能存在这样的日志(前提是所有的业务日志都是通过同一套标准进行输出的)
重点看红框标注的部分。依次为,日志等级、logId、uri、arrRequest/action tpl data。仔细分析,我们会发现,TRACE模式即为请求,包含所有请求信息。DEBUG模式即为响应,包含所有响应信息。具体数据结构不做赘述。
以此为例,根据日志模式、logId、uri、arrRequest、tpl data 等信息可以构建标准的接口请求&返回信息。
需要注意的是:
1、单个日志中可能会存在日志的多个请求,所以要对分析后的日志做数据过滤;
2、如果接口返回数据中存在list,要对list做单一化处理(否则后续的生成的apidoc会存在大量重复字段);
3、日志读取尽量使用yield(要不大文件会扛不住的);
处理逻辑就不描述了,so easy。
那么添加一个新的apidoc的步骤现在变为:
a、从log.dt解析接口的请求&返回数据;
b、提取uri、method、requestparam、retData等字段;
c、根据接口uri每个接口只留取一个请求实例;
d、遍历接口返回数据的结构,list数组中只留取一个item实例;
e、根据apidoc的格式拼装数据,按照uri生成独立文件;
f、剪贴至action,并完成字段注释等操作;
其中a-e的操作 可以概述为 打开浏览器器(1s)→刷业务页面(10s)→执行脚本(1s)→复制粘贴(1s)→补充字段注释信息(xxxs)
只需要一个简单的命令
ApiDoc就写好了
再执行一下 apidoc -i xxxx -o xxxx 就大功告成了
总结
现实开发的过程中,存在着很多重复琐碎的事情,比如维护繁琐的文档,每更新一次代码都需要执行一次apidoc命令,有时候会经常忘记,我们可以搞一个crontab检测文件夹是否有过改动,有的话就自动执行一次命令,一年可以省下不少时间哩……^_^,日常还有很多类似的事,可以开发一些小工具将偷懒发挥到极致。
网易云免费体验馆,0成本体验20+款云产品!
更多网易研发、产品、运营经验分享请访问网易云社区。
相关文章:
【推荐】 四六级成绩查询,你的『验证码』刷出来了吗?
【推荐】 在Android中使用Protocol Buffers(下篇)
ApiDoc 一键生成注释的更多相关文章
- powerdesigner中将表的name在生成建表sql时生成注释
1.为powerdesigner的表设置注释方法: powerdesigner默认没有注释: 设置方法: 选择那个表 右键- >Properties- >Columns- >Cust ...
- Python | 一键生成九宫格图片
一键生成九宫格图片 首先我们准备几张图片: 将代码文件放在放置图片的地方,用软件打开: 点击运行,在当前目录下会生成一个文件夹: 打开新生成的文件夹: 打开对应图片的名称文件夹: 如果不想图片被分成9 ...
- OAuth2授权服务器Id Server一键生成配置原理
OAuth2客户端的配置参数非常多,虽然Id Server通过控制台可视化解决了创建OAuth2客户端的问题.但是如何进一步降低OAuth2的使用难度,把创建的OAuth2客户端转化为配置成为了刚需, ...
- 一键生成APP官网
只需要输入苹果下载地址,安卓市场下载地址,或者内测下载地址,就能一键生成APP的官网,方便在网上推广. 好推APP官网 www.hotapp.cn/app
- Rafy 框架 - 为数据库生成注释
当开发者使用 CodeFirst 开发模式,编写了大量的实体类,在代码中编写了完整的类型注释和属性注释,并自动生成数据库后,往往需要把实体类型和实体属性上的注释同时生成到对应的数据库表及字段上.这样, ...
- python快速生成注释文档的方法
python快速生成注释文档的方法 今天将告诉大家一个简单平时只要注意的小细节,就可以轻松生成注释文档,也可以检查我们写的类方法引用名称是否重复有问题等.一看别人专业的大牛们写的文档多牛多羡慕,不用担 ...
- Ant搭建 一键生成APP技术 平台
1.博客概要 本文详细介绍了当今流行的一键生成APP技术.介绍了这种设计思想的来源,介绍了国内外的研究背景,并介绍了这个技术体系中的一些实现细节,欢迎各路大神们多提意见.一键生成技术,说的通俗点就是, ...
- 使用sencha cmd 一键生成你的应用程序代码
一键生成你的应用程序代码: ------------------------------------------------------------ 我们的出发点就是使用命令来产生一个应用程序,执行以 ...
- 如何给我们的eclipse新建文件自动生成注释
有时候,我们需要给我们的文件加载注释,但手动给每一个方法,每一个类添加注释,非常的繁琐,幸好强大的eclipse已经为我们准备好了自动添加注释的配置文件,它就是——codetemplates.xml ...
随机推荐
- XShell 连接虚拟机中的服务器 失败 、连接中断(Connection closed by foreign host.)
在使用XShell连接虚拟机中的服务器时,报以下错误并断开连接,之前连接还是挺稳定的,忽然就这样了 Last login: Thu Aug :: from 192.168.1.102 [root@no ...
- R语言编程中的常见错误
R语言编程中的常见错误有一些错误是R的初学者和经验丰富的R程序员都可能常犯的.如果程序出错了,请检查以下几方面. 使用了错误的大小写.help().Help()和HELP()是三个不同的函数(只有第 ...
- node cluster模块的使用和测试
首先安装async包 用到的有http.cluster包 http和cluster都会node自带的包,无需安装 1:创建cluster.js,代码如下,更具cpu创建多个进程 var cluster ...
- How to handle Imbalanced Classification Problems in machine learning?
How to handle Imbalanced Classification Problems in machine learning? from:https://www.analyticsvidh ...
- 关于MFC视图文档框架的理解-1
一.单个文档和多个文档的区别: MFC分为对话框程序,单文档程序和多文档程序. 单个文档程序:一个主框架内仅允许打开一个视图,若要打开另一个,则当前的文档必须得关闭.单文档程序可以打开不同格式的文档. ...
- python中zip()函数基本用法
zip()函数接受一系列可迭代对象作为参数,将不同对象中相对应的元素打包成一个元组(tuple),返回由这些元组组成的list列表,如果传入的参数的长度不等,则返回的list列表的长度和传入参数中 ...
- H264视频编码成MP4文件
firehood的专栏 Wince嵌入式开发 目录视图 摘要视图 订阅 赠书 | AI专栏(AI圣经!<深度学习>中文版) 每周荐书:Kotlin.分布式.Keras ...
- 利用stomp.js实现websocket功能,接收ActiveMQ消息队列
一.ActiveMQ消息发送端 package lixj; import java.util.Date; import javax.jms.Connection; import javax.jms.C ...
- stackoverflow打开慢
C:\Windows\System32\drivers\etc 下的hosts文件最下面添加 127.0.0.1 ajax.googleapis.com
- Marionettejs
Marionette是牵线木偶的意思,这个库是对Backbone的一次更高层次封装.这样的封装有两个目标: 减少重复的工作,提高使用Backbonejs时的生产效率给复杂应用页面提供更多的结构,以支撑 ...