ApiFormatMd 轻量级Java接口文档生成工具

特点

  • 完全基于本地代码执行 Java代码无需引用额外依赖
  • 生成MarkDown格式文档 可使用ShowDoc生成在线文档

配置项

main.py

  • 作者 author = ‘江火似流萤’ (对应Md文档作者信息)
  • 载入类根目录 root_path = r"/Users/xxx" (指定Java项目根目录,程序以此为起点遍历Java文件)
  • 生成md文件目录 write_path = r"/Users/xxx/Desktop" (Md文档写入路径)

param.txt

  • 参数 param.txt (Controller层接口信息 具体参考文件内容)

依赖

  • python3

如何使用

方式一 生成文件到本地

  1. 本地安装python3环境
  2. clone本项目到本地
  3. 修改main.py ‘author’ ‘root_path’ 'write_path’配置(首次使用配置)
  4. API信息写入 param.txt 文件
  5. 执行 python3 main.py终端输出 ‘success’ 则执行成功

方式二 生成文档到showDoc

  1. 基于方式一的配置 执行 python3 request_show_doc.py
  2. 打开 https://www.showdoc.com.cn/2040347871634336/ 查看文档
  3. 如果报错ModuleNotFoundError: No module named 'requests'需要导入request包执行 pip3 install requests

方式三 写入utools插件一键生成文档到showDoc

  1. utools 安装一步到位插件
  2. 创建自己的插件
  3. 复制接口到utools生成文档
  • 复制接口
  • 粘贴到utools
  • 成功提示(文档地址已复制到粘贴板)
  • 浏览器打开文档

点击gitee查看源码


例子

java接口

查看代码

    @RequestMapping(value = "/v1/test/{userId}", method = RequestMethod.POST)public JsonResult<List<Map<InvoiceVO.Extend, InvoiceVO>>> test(@PathVariable(value = "userId") int userId,@RequestParam(value = "roleCode", required = true) String roleCode,@RequestBody QuoteStrategyRule quoteStrategyRule) {return new JsonResult<>();}
QuoteStrategyRule(参数)
package com.peng.model;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.util.Date;@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("quote_strategy_rule")
public class QuoteStrategyRule implements Serializable {@TableId(value = "id", type = IdType.AUTO)private Long id;/*** 所属策略ID*/private Long quoteStrategyId;/*** 所属渠道ID*/private Long resellerChannelId;/*** 所属分类 1 生活服务;2 酒店业务;3 飞机票价*/private Byte quoteStrategyCategory;/*** 引用ID,类型为1是0; 类型为2是大类枚举值; 类型为3是子类枚举值;类型为4商品ID;类型为5是规格ID;类型为6是规格ID*/private Byte type;/*** 类型为1是【分类名称】; 类型为2是【分类名称>大类名称】;* 类型为3是【分类名称>大类名称>子类名称】;* 类型为4是【分类名称>商品id】;类型为5是【分类名称>商品id>规格id】;* 类型为6是【分类名称>商品id>规格id>开始时间~结束时间】*/private String name;/*** 引用ID,类型为1是0; 类型为2是大类枚举值; 类型为3是子类枚举值;类型为4商品ID;类型为5是规格ID;类型为6是规格ID*/private Long refId;/*** 生效时间,类型为6时有值否则为null,格式yyyy-MM-dd HH:mm:ss*/private Date startDate;/*** 失效时间,类型为6时有值否则为nu,格式yyyy-MM-dd HH:mm:ss*/private Date endDate;/*** 加价类型 1百分比 2固定金额*/private Byte priceType;/*** 加价百分比,当加价类型为1时,该字段有值*/private Integer rate;/*** 加价金额,当加价类型为2时,该字段有值*/private Integer amount;/*** 创建时间*/private Date createTime;/*** 更新时间*/private Date updateTime;/*** 操作人*/private String operator;
}
InvoiceVO(返回主体)
@Data
public class InvoiceVO extends Invoice {//发票编号-子private Long invoiceNo;//发票标题-子private String invoiceTitle;/*** 发票类型-子*/private InvoiceEnum invoiceEnum;//扩展信息private ExtendSub extendSub;@Datapublic static class Extend {//标题-父private String title;//内容-父private String content;}@Datapublic static class ExtendSub extends Extend {//spu集合-子private List<Spu> spuList;//spu信息-子private Spu spu;/***  spu Map-子*/private Map<String, Spu> spuMap;//渠道枚举private SpecialChannelEnum specialChannelEnum;}
}
Invoice (InvoiceVO父类)
package com.peng.model;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;
import java.util.Date;@JsonInclude(value = JsonInclude.Include.NON_NULL)//为NULL的字段不返回为(JSON)
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("trade_invoice")
public class Invoice implements Serializable {@TableId(value = "invoice_id", type = IdType.AUTO)private Long invoiceId;/*** 发票抬头类型 1:个人 2:单位*/private Byte invoiceTitleType;/*** 发票类型 1:国内纸质发票 2:国内电子发票 3:国际电子发票*/private Byte invoiceType;/*** 个人名称*/private String name;/*** 单位名称*/private String companyName;/*** 发票状态 1:处理中 2:已开发票*/private Byte status;/*** 纳税人识别号*/private String taxRegisterNumber;/*** 发票编号*/private String invoiceCode;/*** 发票金额*/private Long invoiceAmount;/*** 单位注册地址*/private String registerAddress;/*** 单位注册电话*/private String registerPhone;/*** 开户银行*/private String bankName;/*** 银行卡号*/private String bankNo;/*** 收件人姓名*/private String contactName;/*** 收件人手机号*/private String contactPhone;/*** 收件人地址*/private String contactAddress;/*** 收件人邮箱*/private String contactEmail;/*** 快递单号*/private String expressNo;/*** 快递公司*/private String expressName;/*** 发票电子文件地址*/private String fileUrl;/*** 发票电子文件地址*/private String filePath;/*** 实际供应商id*/private Integer supplierId;/*** ownerId*/private Integer ownerId;/*** userId*/private Integer userId;/*** 备注*/private String remark;/*** 删除标识*/private Boolean yn;/*** 创建时间*/private Date createTime;/*** 更新时间*/private Date updateTime;/*** 创建人*/private String createPin;/*** 更新人*/private String updatePin;}
Spu(InvoiceVO.ExtendSub 依赖)
@Data
public class Spu implements Serializable {private static final long serialVersionUID = 128833531741299945L;/*** 主键ID*/private long id;/*** 商品类别*/private byte productType;/*** 商品子类别*/private int productSubType;/*** spu中文名称*/private String nameCn;/*** spu英文名称*/private String nameEn;/*** poiId,按照poi_id顺序逗号分隔,eg:1,3,12*/private String poiIds;/****** 业务字段 ********//*** 多语言处理后显示的name,v1.5.1新增*/private String name;/*** 创建人*/private String createPin;/*** 更新人*/private String updatePin;//key集合private List<Key> keyList;}
Key (Spu,Key 依赖)
@Data
public class Key implements Serializable {private static final long serialVersionUID = 7585869752216827433L;private Integer pageSize;/*** 要素类别*/private byte type;/*** 要素名称*/private String name;/****** 业务字段 *******//*** 要素名称多语言map* Map<languageCode, value>*/private Map<String, String> names;private List<Key> keyList;
}

生成内容

查看内容

接口说明

名称 描述
功能 找不到名字了用这个吧
负责人 江火似流萤

HTTP请求地址

  • 地址: http://domain//v1/test/{userId}

请求方式

  • POST

参数说明

请求参数说明

参数名 类型 必填 示例 说明
roleCode String - - -
quoteStrategyRule QuoteStrategyRule - - -
userId int - - -

返回参数说明

参数名 类型 示例 说明
code String “0” 状态码(非0为异常情况)
message String 请求成功 信息描述
data JsonResult<List<Map<InvoiceVO.Extend,InvoiceVO>>> - -

补充实体说明

QuoteStrategyRule
字段 类型 必填 说明 备注
id Long - - -
quoteStrategyId Long - - 所属策略ID
resellerChannelId Long - - 所属渠道ID
quoteStrategyCategory Byte - - 所属分类 1 生活服务;2 酒店业务;3 飞机票价
type Byte - - 引用ID,类型为1是0; 类型为2是大类枚举值; 类型为3是子类枚举值;类型为4商品ID;类型为5是规格ID;类型为6是规格ID
name String - - 类型为1是【分类名称】; 类型为2是【分类名称>大类名称】;, 类型为3是【分类名称>大类名称>子类名称】;, 类型为4是【分类名称>商品id】;类型为5是【分类名称>商品id>规格id】;, 类型为6是【分类名称>商品id>规格id>开始时间~结束时间】
refId Long - - 引用ID,类型为1是0; 类型为2是大类枚举值; 类型为3是子类枚举值;类型为4商品ID;类型为5是规格ID;类型为6是规格ID
startDate Date - - 生效时间,类型为6时有值否则为null,格式yyyy-MM-dd HH:mm:ss
endDate Date - - 失效时间,类型为6时有值否则为nu,格式yyyy-MM-dd HH:mm:ss
priceType Byte - - 加价类型 1百分比 2固定金额
rate Integer - - 加价百分比,当加价类型为1时,该字段有值
amount Integer - - 加价金额,当加价类型为2时,该字段有值
createTime Date - - 创建时间
updateTime Date - - 更新时间
operator String - - 操作人

InvoiceVO
字段 类型 必填 说明 备注
invoiceId Long - - -
invoiceTitleType Byte - - 发票抬头类型 1:个人 2:单位
invoiceType Byte - - 发票类型 1:国内纸质发票 2:国内电子发票 3:国际电子发票
name String - - 个人名称
companyName String - - 单位名称
status Byte - - 发票状态 1:处理中 2:已开发票
taxRegisterNumber String - - 纳税人识别号
invoiceCode String - - 发票编号
invoiceAmount Long - - 发票金额
registerAddress String - - 单位注册地址
registerPhone String - - 单位注册电话
bankName String - - 开户银行
bankNo String - - 银行卡号
contactName String - - 收件人姓名
contactPhone String - - 收件人手机号
contactAddress String - - 收件人地址
contactEmail String - - 收件人邮箱
expressNo String - - 快递单号
expressName String - - 快递公司
fileUrl String - - 发票电子文件地址
filePath String - - 发票电子文件地址
supplierId Integer - - 实际供应商id
ownerId Integer - - ownerId
userId Integer - - userId
remark String - - 备注
yn Boolean - - 删除标识
createTime Date - - 创建时间
updateTime Date - - 更新时间
createPin String - - 创建人
updatePin String - - 更新人
invoiceNo Long - - 发票编号-子
invoiceTitle String - - 发票标题-子
invoiceEnum InvoiceEnum - - 发票类型-子
extendSub ExtendSub - - 扩展信息

JsonResult
字段 类型 必填 说明 备注
code Integer - - code 为"0"则无异常
msg String - - msg
data T - - data 返回体对象

Extend
字段 类型 必填 说明 备注
title String - - 标题-父
content String - - 内容-父

InvoiceEnum
enum InvoiceEnum {PERSON(1, "抬头为个人"),COMPANY(2, "抬头为单位"),BEING(1, "发票状态处理中"),COMPLETE(2, "发票状态已完成"),PAPER(1, "纸质发票"),ELECTRONIC(2, "电子发票");
ExtendSub
字段 类型 必填 说明 备注
title String - - 标题-父
content String - - 内容-父
spuList List<Spu> - - spu集合-子
spu Spu - - spu信息-子
spuMap Map<String,Spu> - - spu Map-子
specialChannelEnum SpecialChannelEnum - - 渠道枚举

Spu
字段 类型 必填 说明 备注
id long - - 主键ID
productType byte - - 商品类别
productSubType int - - 商品子类别
nameCn String - - spu中文名称
nameEn String - - spu英文名称
poiIds String - - poiId,按照poi_id顺序逗号分隔,eg:1,3,12
name String - - 业务字段 , 多语言处理后显示的name,v1.5.1新增
createPin String - - 创建人
updatePin String - - 更新人
keyList List<Key> - - key集合

SpecialChannelEnum
enum SpecialChannelEnum implements CommonEnum{DEFAULT("DEFAULT", "默认渠道"),SASS("SASS", "SASS平台"),UNKNOWN("UNKNOWN", "UNKNOWN"),;
Key
字段 类型 必填 说明 备注
pageSize Integer - - -
type byte - - 要素类别
name String - - 要素名称
names Map<String,String> - - 业务字段 , 要素名称多语言map, Map<languageCode, value>
keyList List<Key> - - -

正则+Python制作一个轻量级接口文档工具相关推荐

  1. app后端开发一:swagger-ui教程-构建api接口文档工具

    声明 之前写过关于app后端开发的一系列文章,那是我第一次做app后端开发,存在很多不足,本想好好修改一下,想想还是重新写吧,这样子也能让我博客文章看起来多一点嘛,万一以后找工作,别人一看我博客这么多 ...

  2. Popular MVC框架swagger+knif4j接口文档工具使用示例

    Popular MVC框架swagger接口文档工具使用示例 简介 此项目介绍如何使用popularmvc内置的swagger+knife4j实现简单易用的实时API文档,支持在线调试接口! 此项目只 ...

  3. python实现处理swagger接口文档,转换为yaml格式的自动化用例

    前言 之前有很多小伙伴反馈,希望我出一期 将swagger文档转换为 yaml格式的自动化用例,那么本期福利来咯~~这一篇文档,将会带领你们实现 如何通过 swagger文档转换为 yaml格式的用例 ...

  4. springboot 中文文档_比Swagger还好用的自动生成接口文档工具

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后 ...

  5. springboot 之 自动生成接口文档工具JApiDocs

    JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具 简易使用方法 1.添加依赖 <dependency><groupId>io.github.y ...

  6. java 接口文档工具_一款Java基于注释的接口文档生成工具

    一. 痛点 你还在手动维护接口文档嘛,花一个下午不停的复制粘贴代码里面的注释 接口字段变动,还得去更新文档,更新不及时导致文档不同步 或者你使用了swagger之类的基于注解,依靠运行时的文档工具,看 ...

  7. 使用smart-doc 做接口文档工具,Controller访问路径中的常量无法替换问题

    最近,项目开发中使用 smart-doc 作为接口文档生成工具的使用中,由于请求路径带有常量的问题, 虽然根据 smart-doc官网文档中如何替代请求路径的常量设置替换的方法,但生成的html文中路 ...

  8. java 非侵入式_Java非侵入式API接口文档工具apigcc用法详解

    一个非侵入的api编译.收集.Rest文档生成工具.工具通过分析代码和注释,获取文档信息,生成RestDoc文档 前言 程序员一直以来都有一个烦恼,只想写代码,不想写文档.代码就表达了我的思想和灵魂. ...

  9. 推荐一个接口文档工具

    ShowDoc 转载于:https://www.cnblogs.com/LW-baiyun/p/8003975.html

最新文章

  1. 使用Numpy实现PCA
  2. boost::gil模块计算直方图的测试程序
  3. go 安装墙外的依赖包报错问题
  4. java 面向对象 重载_Java方法重载
  5. monkey操作,获取包名,参数,日志,百分比
  6. vue点餐系统项目总结
  7. 真随机数 c语言编程,C语言真正获取随机数
  8. 年薪50万的程序员_2018年这类程序员工资最高!年薪50万只能算一般
  9. unity全栈开发是什么意思_unity3D用什么语言开发好?
  10. 查看自己电脑的主板支持多大的内存
  11. 市值4000亿,超越京东小米!8年奋斗狂奔美团终于上市了
  12. 如何编辑PDF文件?简单好用的编辑方法分享
  13. SpringBoot微信小程序商城源码(前台+后台)
  14. 【最新】Xcode 8 打包教程
  15. JPEG图像压缩算法流程详解
  16. 2021全国计算机技术与软件专业技术资格水平考试(软考)网络管理员考试大纲
  17. .NET程序员的技能分析参考V1.0(有附件)
  18. 老罗Activity启动流程总结
  19. 如何把win10的计算机调至桌面,win10如何显示我的电脑在桌面?小编教你显示的方法...
  20. 战五渣系列之八(绝杀AOP)

热门文章

  1. sklearn官网网址
  2. java 实体类命名
  3. CSS3弹性盒布局方式
  4. layui 表格操作列按钮动态显示变换
  5. mac 下修改host文件
  6. 利用binlog恢复数据
  7. 虹科案例 | 虹科Dimetix激光测距传感器可实现无接触式监测采矿设备健康状况!
  8. 计划完不成,整天学不进去,怎么办?
  9. PN6005电动车控制器芯片DC-DC降压芯片
  10. HTML5基础-新增标签+新增属性+布局案例