Api文档自动生成工具

java开发,根据代码自动生成api接口文档工具,支持RESTful风格,今天我们来学一下api-doc的生成

预览

1.png

2.png

3.png

在线预览地址

http://lovepeng.gitee.io/apidoc

开发原理

这个工具是一个典型的前后端分离开发的项目,想了解前后端分离开发的同学也可以下载本项目学习。

项目后端使用java代码,前端使用angular开发。Java开发时,使用注解把文档相关信息标注在类的方法上,通过工具自动扫描代码的注解,生成json数据,发给前端,前端angular解析生成页面

本项目自带一个spring-boot框架为基础的demo(这里使用spring-boot做演示的demo仅仅是为了方便,本质上只要是java写的项目都可以用该工具),前端用angular做了一个比较漂亮的界面(最终前端界面都编译成了html,如果你前端不熟悉,可以跳过,不用管他),这里使用angular开发仅仅是我比较喜欢,你可以用任何你喜欢的的前端框架或者仅仅使用html写一个漂亮的界面就可以。

后端项目开源地址:https://github.com/liepeng328/api-doc

前端开源地址:https://github.com/liepeng328/api-doc-angular

5.png

快速启动

当成一个工具类用就可以了,下载本项目,拷贝包com.apidoc下的代码到你的系统,
然后拷贝前端html页面,在static.apidoc文件下,到你的资源文件下。即可使用
使用时,后台提供两个接口,目录文档接口和某个功能的详细接口

//生成目录接口
ApiDoc apiDoc = new GeneratorApiDoc()
                        .setInfo(//设置文档基本信息
                                new ApiDocInfo()
                                        .setTitle("某莫系统后台管理文档")
                                        .setVersion("1.0")
                                        .setDescription("")

                        )
                        .generator(packageName);//指定生成哪个包下controller的文档
 System.err.println(JsonUtil.toString(detail));

//详细功能接口
ApiDocAction detail = new GeneratorApiDoc()
                //设置数据库连接信息,可忽略
                .setDriver(driver)
                .setUrl(url)
                .setUserName(userName)
                .setPassword(password)
                .setDataBaseName(dataBaseName)
                .getApiOfMethod(methodUUID);
        System.err.println(JsonUtil.toString(detail));

一个详细的例子

一个详细例子如下代码,这里是springboot/springmvc的controller示例(展示两个文档,前端接口和后台接口)参考代码这个类 UserController.java

注解详细介绍

共有6个注解,标注出整个文档信息(我为什么讲那么详细,那么啰嗦,而且我没有把这个项目打成jar包直接给别人使用,就是因为文档生成最大可能是需要特殊定制,确保你拿到该代码可以个性化定制功能,随意修改)。

  • Api 标注文档的功能模块
  • ApiAction 标注一个功能
  • ApiReqAparams 请求参数
  • ApiResqAparams 响应参数
  • ApiParam 参数,用以组成请求参数和响应参数
  • Table 用以标注实体类(比如bean)和数据库表的关系,自动从数据库读取相关信息,不用写大量的 ApiReqAparams和ApiResqAparams

详细介绍如下

Api:写在类上,表明一个功能模块。
属性:

  • name 模块名称
  • mapping url映射

ApiAction: 写在方法上,表明一个功能点
属性:

  • name 方法的功能名称
  • mapping url映射
  • description 描述
  • method 请求方式(get,post,put,delete)

ApiReqParams: 请求参数
属性:

  • type:参数类型
  • header 在请求头
  • url 在url后拼接
  • form 表单数据
  • json json格式
  • ApiParam :参数列表
  • value : class类,增加该类可自动读取数据库信息,避免写多个属性
  • remove: 配合value使用,去除class类中无用的属性,比如id
  • dataType: 数据类型(字符串string,数字number,文件file,日期date,对象object,数组array,布尔类型boolean)
  • descrption:描述
  • defaultValue: 默认值
  • required:是否必须
  • object:从属于哪个对象(因为请求参数或者响应参数可能是对象中嵌套对象的,这里为了更好的表示这种层级关系,增加两个属性,object和belongTo,构建一个树结构,表示对象之间无限、互相嵌套)
  • belognTo : 对应object 默认值为"0",字符串0

ApiRespParams: 响应参数
属性:

  • ApiParam: 该参数等同于请求参数中的ApiParam,参考如上描述

下载本项目并运行

配置jdk8以上版本,下载代码,运行ApidocApplication类main方法即可。
然后访问地址 http://localhost:8080/index.html

感谢列表

该项目为maven项目,引用工具请查看 pom.xml
感谢 spring-boot

来源:https://www.jianshu.com/u/4ea...


终端研发部
一条执着于技术+职场经验之路,从人工智能,Android,FFmpeg音视频解码,前端开发及微信小程序,同时覆...
1.2k 声望
74 粉丝
0 条评论
推荐阅读
Github重磅教程!从0到1,边学边实战!
据我所知,刚开始入门编程的都止步开始和选择,可选的很多,java,Python,前端,golang等等,如果没有好的选择可以和于小二来说话。如果没有什么好的选择,我建议你去学习java吧

爱编码的coder阅读 1k

封面图
从零搭建 Node.js 企业级 Web 服务器(零):静态服务
过去 5 年,我前后在菜鸟网络和蚂蚁金服做开发工作,一方面支撑业务团队开发各类业务系统,另一方面在自己的技术团队做基础技术建设。期间借着 Node.js 的锋芒做了不少 Web 系统,有的至今生气蓬勃、有的早已夭折...

乌柏木149阅读 12.3k评论 10

正则表达式实例
收集在业务中经常使用的正则表达式实例,方便以后进行查找,减少工作量。常用正则表达式实例1. 校验基本日期格式 {代码...} {代码...} 2. 校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊...

寒青55阅读 7.8k评论 11

JavaScript有用的代码片段和trick
平时工作过程中可以用到的实用代码集棉。判断对象否为空 {代码...} 浮点数取整 {代码...} 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math.floor是不同的。 {代码...} 生成6位数字验证码 {代码...} ...

jenemy46阅读 6k评论 12

从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木66阅读 6.2k评论 16

再也不学AJAX了!(二)使用AJAX ① XMLHttpRequest
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第二篇,最近更新于 2023 年 1...

libinfs39阅读 6.3k评论 12

封面图
从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木44阅读 7.4k评论 6

1.2k 声望
74 粉丝
宣传栏