smart-doc的使用

news2024/11/16 12:01:59

smart-doc的使用

目录

1. 什么是smart-doc

2. smart-doc的功能特性

3. smart-doc自定义注释tag

4. 通过引入依赖生成文档

5. 通过集成smart-doc的maven插件生成文档

6. 生成Postman json文件与导入Postman测试


1. 什么是smart-doc

    smart-doc是一款同时支持JAVA REST API和[Apache](https://so.csdn.net/so/search?q=Apache&spm=1001.2101.3001.7020) Dubbo RPC接口文档生成的工具,smart-doc在业内率先提出基于JAVA泛型定义推导的理念, 完全基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中。你只需要按照java-doc标准编写注释, smart-doc就能帮你生成一个简易明了的Markdown、HTML5、Postman Collection2.0+、OpenAPI 3.0+的文档。

2. smart-doc的功能特性

  • 零注解、零学习成本、只需要写标准JAVA注释。
  • 基于源代码接口定义自动推导,强大的返回结构推导。
  • 支持Spring MVC、Spring Boot、Spring Boot Web Flux(controller书写方式)、Feign。
  • 支持Callable、Future、CompletableFuture等异步接口返回的推导。
  • 支持JavaBean上的JSR303参数校验规范,包括分组验证。
  • 对JSON请求参数的接口能够自动生成模拟JSON参数。
  • 对一些常用字段定义能够生成有效的模拟值。
  • 支持生成JSON返回值示例。
  • 支持从项目外部加载源代码来生成字段注释(包括标准规范发布的jar包)。
  • 支持生成多种格式文档:Markdown、HTML5、Asciidoctor、Postman Collection、OpenAPI 3.0。 Up- 开放文档数据,可自由实现接入文档管理系统。
  • 支持导出错误码和定义在代码中的各种字典码到接口文档。
  • 支持Maven、Gradle插件式轻松集成。
  • 支持Apache Dubbo RPC接口文档生成。
  • debug接口调试html5页面完全支持文件上传,下载(@download tag标记下载方法)测试。
  1. smart-doc自定义注释tag
    =====================
tag名称描述
@ignoreignore tag用于过滤请求参数对象上的某个字段,设置后smart-doc不输出改字段到请求参数列表中。关于响应字段忽略的请看,如果ignore加到方法上,则接口方法不会输出到文档。从1.8.4开始ignore支持添加到controller上进行忽略不想生成文档的接口类。ignore也可以用于方法上忽略某个请求参数。
@required如果你没有使用JSR303参数验证规范实现的方式来标注字段,就可以使用@required去标注请求参数对象的字段,标注smart-doc在输出参数列表时会设置为true。建议用JSR303
@mock从smart-doc 1.8.0开始,mock tag用于在对象基本类型字段设置自定义文档展示值。设置值后smart-doc不再帮你生成随机值。方便可以通过smart-doc直接输出交付文档。
@dubbo从smart-doc 1.8.7开始,dubbo tag用于在dubbo的api接口类上添加让smart-doc可以扫描到dubbo rpc的接口生成文档。
@restApi从smart-doc 1.8.8开始,restApi tag用于支持smart-doc去扫描Spring Cloud Feign的定义接口生成文档。
@order从smart-doc 1.9.4开始,order tag用于设置controller接口或者api入口的自定义排序序号,@order 1就表示设置序号为1。
@ignoreResponseBodyAdvice从smart-doc 1.9.8开始,ignoreResponseBodyAdvice tag用于忽略ResponseBodyAdvice设置的包装类。
@download从smart-doc 2.0.1开始,download tag用于标注在controller的文件下载方法上,生成debug页面时可实现文件下载测试。并且支持下载文件带请求头参数测试。
@page从smart-doc 2.0.2开始,page tag用于标注在controller的方法上表示该方法用来渲染返回一个静态页面,生成debug页面时如果发起测试,测试页面会自动在浏览器开启新标签显示页面。
@ignoreParams从smart-doc 2.1.0开始,ignoreParams tag用于标注在controller方法上忽略掉不想显示在文档中的参数,例如:@ignoreParams id name,多个参数名用空格隔开
@response从smart-doc 2.2.0开始,response tag标注在controller方法上可以允许用这自己定义返回的json example。建议只在返回基础类型时使用,如:Result类型这种泛型是简单原生类型的响应。
@tag@since 2.2.5, @tag用于将controller方法分类, 可以将不同contoller下的方法指定到多个分类下, 同时也可以直接指定controller为一个分类或多个分类

4. 通过引入依赖生成文档

    4.1 pom文件中增加smart-doc的依赖(需要注意jar包的冲突问题)
<dependency>    <groupId>com.github.shalousun</groupId>    <artifactId>smart-doc</artifactId>    <version>2.0.5</version>    <scope>test</scope></dependency>
    4.2 通过单元测试调用API方法生成
@Testpublic void buildSmartDoc(){	ApiConfig config = new ApiConfig();	config.setStrict(true);//严格模式	config.setAllInOne(true);//true则将所有接口合并到一个	config.setServerUrl("http://xxxx.xxxxx.xx/wevruit/");	config.setCoverOld(true); 	config.setOutPath("d:\\md");//输出目录	// @since 1.2,如果不配置该选项,则默认匹配全部的controller,	// 如果需要配置有多个controller可以使用逗号隔开	config.setPackageFilters("com.xxxx.xxxxx.controller.account");	//默认是src/main/java,maven项目可以不写 	// 生成markdown文档	ApiDocBuilder.buildApiDoc(config);	// 生成html文档	// HtmlApiDocBuilder.buildApiDoc(config);	// 生成openApi文档	// OpenApiBuilder.buildOpenApi(config);}
    4.3 查看文档

  1. 通过集成smart-doc的maven插件生成文档
    ============================

     5.1 添加maven插件(使用插件后就不需要在项目的`maven dependencies`中添加smart-doc的依赖了,直接使用插件即可)
    
<plugin>	<groupId>com.github.shalousun</groupId>	<artifactId>smart-doc-maven-plugin</artifactId>	<version>2.3.0</version>	<configuration>		<!--指定生成文档的使用的配置文件,配置文件放在自己的项目中-->		<configFile>${basedir}/src/main/resources/smart-doc.json</configFile>		<!--指定项目名称-->		<!--<projectName>测试</projectName>-->		<!--smart-doc实现自动分析依赖树加载第三方依赖的源码,如果一些框架依赖库加载不到导致报错,这时请使用excludes排除掉-->		<!--<excludes>-->			<!--&lt;!&ndash;格式为:groupId:artifactId;参考如下&ndash;&gt;-->		<!--</excludes>-->		<!--自1.0.8版本开始,插件提供includes支持,配置了includes后插件会按照用户配置加载而不是自动加载,因此使用时需要注意-->		<!--smart-doc能自动分析依赖树加载所有依赖源码,原则上会影响文档构建效率,因此你可以使用includes来让插件加载你配置的组件-->		<includes>			<!--格式为:groupId:artifactId;参考如下-->			<!--需要加入该依赖包的源码进行解析,否则dto中的注释无法被解析(泛型中嵌套对象无法分析)-->			<include>groupId:artifactId</include>		</includes>	</configuration></plugin>
    5.2 添加smart-doc生成文档的配置(配置内容实际上就是以前采用单元测试编写的`ApiConfig`转成json后的结果)
{  "projectName": "admin-end",  "outPath": "../../document/接口文档/", // 生成文件输出目录--必填项  "serverUrl": "https://xxxx.xxxxx.cn/", // 接口对应服务器地址,  "coverOld": true, // 是否覆盖旧的文件,  "allInOne": false, // 是否将文档合并到一个文件中,  //"allInOneDocFileName":"admin.md", // 自定义设置输出文档名称  "isStrict": false, // 是否开启严格模式  "style":"xt256",  // "createDebugPage": true, // 生成html时才有效  "packageFilters": "com.xxx.xxx.xxxxx.xxxxxx.controller" // controller包过滤}
    5.3 在idea中或使用mvn命令生成文档

//生成htmlmvn -Dfile.encoding=UTF-8 smart-doc:html//生成markdownmvn -Dfile.encoding=UTF-8 smart-doc:markdown//生成adocmvn -Dfile.encoding=UTF-8 smart-doc:adoc//生成postman json数据mvn -Dfile.encoding=UTF-8 smart-doc:postman// 生成 Open Api 3.0+,Since smart-doc-maven-plugin 1.1.5mvn -Dfile.encoding=UTF-8 smart-doc:openapi
    5.4 maven多模块中使用插件

    如果maven结构是严格按照父子级来配置的,比如web1和web2都依赖于common,这种情况下如果跑到web1下或者web2目录下直接执行mvn命令来编译都是无法完成的。需要在根目录上去执行命令编译命令才能通过,而smart-doc插件会通过类加载器去加载用户配置的一些类,因此是需要调用编译的和执行命令是一样的。这种情况下建议你建smart-doc-maven-plugin放到根pom中,在web1和web2中放置各自的smart-doc.json配置。然后通过-pl去指定让smart-doc生成指定  

模块的文档。操作命令如下:

# 生成web1模块的api文档mvn smart-doc:markdown -Dfile.encoding=UTF-8  -pl :web1 -am# 生成web2模块的api文档mvn smart-doc:markdown -Dfile.encoding=UTF-8  -pl :web2 -am

6. 生成Postman json文件与导入Postman测试

    6.1 调整smart-doc配置
{  "projectName": "admin-end",  "outPath": "../../document/接口文档/", // 生成文件输出目录--必填项  "serverUrl": "https://{{server}}/", //导出postman建议将server设置成这样,然后在postman中建立一个server环境变量,调试时只需根据实际服务器来修改server的值。  "coverOld": true, // 是否覆盖旧的文件,  "allInOne": true, // 是否将文档合并到一个文件中,  //"allInOneDocFileName":"admin.md", // 自定义设置输出文档名称  "isStrict": false, // 是否开启严格模式  "style":"xt256",  // "createDebugPage": true, // 生成html时才有效  "packageFilters": "com.xxx.xxx.xxxxx.xxxxxx.controller" // controller包过滤}
    6.2 导出postman json文件
mvn smart-doc:postman -Dfile.encoding=UTF-8 -pl :xxx-admin-end -am
    6.3 将文件导入到postman中

    6.4 配置环境变量替换server

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/164625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL监控(二): Prometheus入门

1.官网 OpenTelemetry - CNCF Prometheus官方文档 安装包下载页 Prometheus安装官方文档指引 2.安装mysqld_exporter (1)下载 mysqld_exporter下载 (2)配置文件 my.cnf [client] hostxx.xx.xx.xx port31090 userroot passwordroot(3)启动 启动命令&#xff1a; nohup …

关于常见排序的一些细节的理解

最近复习了一下十种基本的排序算法&#xff0c;但是发现有很多的细节理解不到位&#xff0c;不是忘了而是根本没理解。就比如为啥有的排序是不稳定排序&#xff0c;而有的排序的时间复杂度高等等问题。一、不稳定排序的稳定性分析和复杂度常见排序算法中有4种排序是不稳定的。快…

详解最近公共祖先(LCA)

看本博客前建议先看一下ST算法解决BMQ问题详解一&#xff0c;LCA概念最近公共祖先(Lowest Common Ancestors, LCA)指有根树中距离两个节点最近的公共祖先。祖先指从当前节点到树根路径上的所有节点。u和v的公共祖先指一个节点既是u的祖先&#xff0c;又是v的祖先。u和v的最近公…

php网上书城|基于PHP实现网上书店商城藉项目

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

3分钟秒懂,最简单通俗易懂的spring bean 生命周期介绍与源码分析,附上demo完整源码

文章写作背景 最近突然身边很多小伙伴问我有没有spring bean生命周期的通俗移动的介绍 起初不太理解为什么&#xff0c;后来才想明白&#xff0c;哦对了&#xff0c;年底了&#xff0c;快开始跳槽季了&#xff0c;这不就是java八股文面试 的题目嘛&#xff0c;不得不说&#xf…

【5G RRC】Master Information Block (NR-MIB)

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

手把手教你分析 Linux 启动流程

下载 Linux 内核网址: https://www.kernel.org/ 常用 Linux 内核源码为 4.14、4.19、4.9、5.10、5.15、6.1 等版本,其中 4.14 版本源码压缩包大概 90+M,解压后 700+M,合计 61350 个文件。如此众多的文件,用 source insight 或者 VSCode 查看都会比较卡,所以可以采用在线…

计算机网络第四章

1.网络层主要任务是把分组从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务&#xff0c;网络层传输单位是数据报三个功能&#xff1a;路由选择与分组转发&#xff08;最佳路径&#xff09;异构网络互联拥塞控制数据交换方式三种交换方式&#xff1a;电路交换…

一动不动是王八?动态内存有话说

文章目录前言动态内存函数介绍mallocfreecallocrealloc柔性数组柔性数组特点柔性数组的优点方便内存释放提高我们的访问速度总结前言 一动不动是王八&#xff0c;出自2014年的春晚&#xff0c;小时候经常喜欢说这句话&#xff0c;那在我们C语言中&#xff0c;我们知道&#xf…

年度征文|一个业余电脑玩家的30年(1992-2022)

《论语为政》&#xff1a;“五十而知天命”。岁月真的是一把刀&#xff0c;一晃已过不惑之年&#xff0c;还有几天就要进入知非之年。不论知非还是知天命&#xff0c;反正是花甲将至而从心所欲了。年少时因某种不合机缘&#xff0c;错与IT界擦肩而过&#xff0c;每每想起就扼腕…

gradel学习+IDEA配置

Gradle的下载 Gradle下载地址如下 https://gradle.org/releases/ 我自己的下载的7.4.2 可以选择下载完整的压缩包&#xff0c;将压缩包解压到自己指定的目录中即可。 Gradle安装 1、配置系统变量 GRADLE_HOME 2、配置环境变量 %GRADLE_HOME%是获取变量名称为GRADLE_HOME的…

项目看板开发经验分享(一)——光伏绿色能源看板

今天新开一个系列&#xff0c;专门介绍近期工作中开发的几个比较酷炫的看板的开发思路与经验分享。第一节我们就来介绍下这个光伏绿色能源看板&#xff0c;整体浏览如下&#xff1a; 那就直接进入正题吧—— 0、可复用组件panel 在讲解各个模块之前&#xff0c;我们先来完成一…

Mybatis 框架下 SQL 注入攻击的 3 种方式

SQL注入漏洞作为WEB安全的最常见的漏洞之一&#xff0c;在java中随着预编译与各种ORM框架的使用&#xff0c;注入问题也越来越少。 新手代码审计者往往对Java Web应用的多个框架组合而心生畏惧&#xff0c;不知如何下手&#xff0c;希望通过Mybatis框架使用不当导致的SQL注入问…

Node.js学习笔记

Node.js学习笔记 浏览器的内核包括两部分核心&#xff1a;DOM渲染引擎、JavaScript解析引擎。脱离浏览器环境也可以运行JavaScript&#xff0c;只要有JavaScript引擎就可以。 Node.js是一个基于Chrome V8引擎的JavaScript运行环境。Node.js内置了Chrome的V8 引擎&#xff0c;…

SpringBoot项目部署

系列文章目录 Spring Boot[概述、功能、快速入门]_心态还需努力呀的博客-CSDN博客 Spring Boot读取配置文件内容的三种方式_心态还需努力呀的博客-CSDN博客 Spring Boot整合Junit_心态还需努力呀的博客-CSDN博客 Spring Boot自动配置--如何切换内置Web服务器_心态还需努力呀…

Open3D SOR滤波(Python版本)

文章目录一、简介二、实现代码三、实现效果参考资料一、简介 SOR滤波过程相对简单&#xff0c;其原理是通过查询点与邻域点集之间的距离统计判断来进行过滤离群点。假设一个点的邻近点集符合正太分布&#xff0c;因此我们可以通过计算出该点到它所有临近点的平均距离meanD和标准…

国内怎么体验openAI chatGPT

怎么体验openAI chatGPT 一&#xff0c;前提 1&#xff0c;先准备好一个gmai的邮箱&#xff0c;注册时要用 2&#xff0c;&#xff08;懂得都懂&#xff09; 3&#xff0c;ChatGPT&#xff1a;网址 二&#xff0c;开始注册 1,sign up&#xff0c;用Gmail注册&#xff0c;我…

洛谷P8942 Digital Fortress

题目大意 给定一个区间&#xff0c;构造一个单调不减的序列&#xff0c;使得其前缀异或和与后缀异或和均单调递减&#xff0c;判断这种序列是否存在并输出任意一种解。 思路 暴力 dfs 当然会 TLE,所以我们要仔细分析&#xff1a; ① 在什么情况下异或和能够单调不减&#x…

2023/1/15 JS-原型与原型链

1 什么是原型 原型是Javascript中的继承的基础&#xff0c;JavaScript的继承就是基于原型的继承。每一个JS对象都可以获得自己的原型&#xff0c;通过原型可以共享函数对象和实例对象之间的属性和方法。 原型的出现&#xff0c;就是为了解决 构造函数 的缺点&#xff1a; 每一…

HTB-Shoppy

HTB-Shoppy信息收集开机提权信息收集 22和80。 能扫描出来的东西很杂&#xff0c;但是admin和login可以重点关注。 访问其中之一&#xff0c;能发现是一个登陆界面。 对其进行简单的sql注入测试。输入admin’or11#会出现504超时&#xff0c;判断可能是因为有sql防御措施所致。…