不想用 Swagger?可以试试这个神器!

C# 进程间 双内存共享 高帧率图像传输 演示了两个进程之间通过 双内存共享 的方式, 来实时处理图像,并以高帧率(40~60FPS)传输的基本示例。 进程间内存共享的优点:高性能、低延迟、资源效率高、简单可靠。 适用场景:实时图像处理、大数据传输、多进程协作、实时监控系统,等等。 阅读详情

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 8:55 更新文章,每天掉亿点点头发...

源码精品专栏

 
  • 1. 概述

  • 2. 快速入门

  • 3. 高级用法

  • 666. 彩蛋


1. 概述

在《芋道 Spring Boot API 接口文档 Swagger 入门》一文中,我们一起学习了如何使用 Swagger 生成接口文档。但是狗芳嫌弃需要在 Controller 上添加一堆 @ApiOperation、@ApiOperation 注解,对代码有一定的侵入性,就抱着艿艿的大腿,跪求有没其它解决方案。

抱大腿

艿艿拍了拍狗芳的 ???? 头,当然没问题,我们可以使用 JApiDocs 工具,它可以基于 Controller 上的 Java 注释,直接生成接口文档。效果如下图所示:

效果图

友情提示:JApiDocs 的 GitHub 地址是 https://github.com/YeDaxia/JApiDocs 。

2. 快速入门

看完了 JApiDocs 生成的接口文档的效果,我们一起来快速入门下。完整的示例项目,可见 https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-24/lab-24-apidoc-japidocs 地址,代码如下图所示:

项目代码

下面,我们来瞅一瞅如何使用~

2.1 引入依赖

在 pom.xml 文件中,引入 japidocs 的依赖。

<dependency>
    <groupId>io.github.yedaxia</groupId>
    <artifactId>japidocs</artifactId>
    <version>1.4.4</version>
</dependency>

2.2 创建 JApiDocs 配置

创建 TestJApiDocs 类,作为 JApiDocs 的配置,生成接口文档。代码如下:

public class TestJApiDocs {

    public static void main(String[] args) {
        // 1. 创建生成文档的配置
        DocsConfig config = new DocsConfig();
        config.setProjectPath("/Users/yunai/Java/SpringBoot-Labs/lab-24/lab-24-apidoc-japidocs"); // 项目所在目录
        config.setDocsPath("/Users/yunai/Downloads/"); // 生成 HTML 接口文档的目标目录
        config.setAutoGenerate(true); // 是否给所有 Controller 生成接口文档
        config.setProjectName("示例项目"); // 项目名
        config.setApiVersion("V1.0"); // API 版本号
        config.addPlugin(new MarkdownDocPlugin()); // 使用 MD 插件,额外生成 MD 格式的接口文档
        // 2. 执行生成 HTML 接口文档
        Docs.buildHtmlDocs(config);
    }

}

偷懒艿:代码比较简单,胖友看下注释,秒懂~

稍后,我们执行 #main(...) 方法,就可以使用 JApiDocs 生成接口文档。

2.3 代码注释

JApiDocs 是通过解析 Controller 源码上的 Java 注释,所以我们需要在相关的类、方法、属性上,进行添加。示例代码如下图:

Java 类
  • UserController

  • UserCreateReqVO

  • UserListReqVO

  • UserRespVO

2.4 简单测试

示例项目搭建完成,我们来简单测试下。

① 执行 TestJApiDocs 类,生成 JApiDocs 接口文档。结果如下图所示:

生成结果

② 点击 index.html 文件,查看 HTML 接口文档。如下图所示:

HTML 接口文档

后续,我们可以部署到 Nginx 下,提供给前端小伙伴查看接口文档。

③ 点击 *-api-docs.md 文件,查看 Markdown 接口文档。如下图所示:

Markdown 接口文档

3. 高级用法

本小节,我们来学习下 JApiDocs 的高级用法。

友情提示:在 99.99% 的场景下,不会使用到,所以胖友可以选择忽略不看。

如果使用到,请胖友直接去锤死狗芳。

JApiDocs 自定义了 @ApiDoc 和 @Ignore 注解,用于针对指定接口,进行自定义的配置。下面,我们来瞅一瞅哦。

良心艿:可能会有胖友说,JApiDocs 的注解不是和 Swagger 的注解一样,也对代码有入侵吗?确实是的,但是比 Swagger 的注解入侵性会低一些,并且基本不需要使用到。

3.1 @ApiDoc 注解

@ApiDoc 注解,声明在接口方法上,通过它的四个属性,进行灵活配置。

  • result 属性:直接声明返回结果的类型。如果你声明了,将会覆盖方法返回结果的类型。

  • stringResult 属性:返回字符串。在返回结果比较简单,而不想创建一个专门的返回类,则可以考虑使用这个属性。

    友情提示:建议返回结果是否简单,还是创建一个对应的返回类,可维护性更好。

  • url 属性:请求 URL。扩展字段,用于支持非 SpringMVC 的项目。

    友情提示:JApiDocs 提供了 SpringControllerParser 类,支持解析 SpringMVC 的注解。

    对于一些老项目,例如说使用 Struts 框架,则需要通过 url 属性来声明。当然,更加推荐自定义一个针对 Struts 的 Parser 解析器,每个接口都手写,挺麻烦的。

  • method 属性:请求 Method。扩展字段,用于支持非 SpringMVC 项目。

@ApiDoc 注解还有一个作用,声明该接口需要导出文档。不过因为一般我们会设置 DocsConfig 的 autoGenerate 属性为 true,默认导出所有 Controller 的接口文档,所以无需使用它。

具体的使用示例如下:

// 示例一
@ApiDoc(result = AdminVO.class, url = "/api/v1/admin/login2", method = "post")

// 示例二:针对 `stringResult` 属性
@ApiDoc(stringResult = "{code: 0, data: 'success'}")
@GetMapping(value = "custom-json")
public Map customJsonResult() {}

3.2 @Ignore 注解

@Ignore 注解,比较好理解,实现接口或字段的忽略。

具体的使用示例如下:

// 示例一:声明在 Controller 类上,忽略该 Controller 的所有接口
@Ignore
public class UserController {}

// 示例二:声明在接口方法上,忽略该接口
@Ignore
@PostMapping("save")
public ApiResult saveUser() {}

// 示例三:声明在接口使用到的对象的属性上,忽略该属性
public class UserCreateReqVO {
   
   @Ignore
   private Integer age;
   
}

3.3 @description 注释

通过 @description 注释,主要有两种使用场景。

友情提示:由于 @description 注释不是 Java 注释中自带的标签,所以 IDEA 会存在黄色报警的情况,需要手动添加下,去除告警。

① 在 Controller 类上使用 @description 注释,将会作为该 Controller 在接口文档上的导航标题,而不会使用上面的注释内容。示例代码如下:

/**
 * 用户 Controller,提供用户基本信息的 CRUD 的功能
 *
 * @description 用户 API
 */
@Controller
public class UserController {}

② 在接口方法上使用 @description 注释,则可以在接口方法下面额外添加一行说明。示例代码如下:

/**
 * 获得用户列表
 *
 * @param listReqVO 列表筛选条件
 * @return 用户列表
 * @description 不同的前端界面,可能有不同的查询诉求,通过该接口统一满足。
 */
@GetMapping("list")
public List<UserRespVO> list(UserListReqVO listReqVO){
    return null;
}

666. 彩蛋

至此,我们已经**“精通”** JApiDocs 的入门使用,通过在接口上添加 Java 注释,即可生成 HTTP API 的接口文档,非常的便捷。更多内容,胖友可以阅读《JApiDocs 官方文档》。

不过真正在团队中使用的话,艿艿还是会选择 Swagger,而不是 JApiDocs 作为接口文档的工具。主要有如下原因:

① JApiDocs 界面不提供接口调试功能,这个在日常开发中,还是非常高频使用的一个功能。

② JApiDocs 支持对接 RAP 接口平台,不支持我们使用的 YApi 接口平台,需要进行二次的插件开发。而 YApi 默认提供对 Swagger 的集成,可以直接采集接口信息。

良心艿:随着公司项目越来越多,我们会引入接口平台,提供统一的入口,查看所有项目的接口文档。

同时,接口平台往往提供接口的 mock 能力,可以更好的实现前后端的并行开发,提升开发效率和体验。

想要进一步了解的胖友,可以阅读《芋道 Spring Boot API 接口文档 Swagger 入门》文章的「4. 更强大的 YApi」小节。

③ JApiDocs 是基于 注释 作为接口信息的数据来源,而 Java 注释的定制化能力是弱于 注解 的。

例如说,Swagger 的 @ApiImplicitParam 注解,可以使用 required 属性声明是否必填,使用 example 属性声明参数示例,这个在 Java 注释是非常难以实现的。

很多时候,我们会认为 Swagger 使用注解的侵入性很强,是因为在参数较多的接口方法上,会写一大片的 @ApiImplicitParam 注解,导致看起来会乱糟糟的。这个其实非常好解决,艿艿推荐对于复杂参数的接口,统一定义 POJO 类。示例如下:

onemall 示例

友情提示:艿艿最近在更新 https://github.com/YunaiV/onemall 开源项目,已经将近 4000 star 啦。

胖友可以瞅瞅,顺手在 star 一波,不迷路。


JApiDocs 与 Swagger 之间,胖友会选择哪一个作为接口文档的工具呢?!欢迎留言讨论。

技术的选择,往往不存在对错,更多的时候是合适。

我们在得到什么的时候,也在失去什么。


End~继续抠脚。

我是艿艿,一个每天徘徊在煞笔与牛啤的死胖子。

我


欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

兄弟,艿一口,点个赞!????

YOLOv8中的C2f模块代码详解 在YOLOv8网络结构中,C2f模块(CSP Bottleneck with 2 Convolutions)是一个关键组件,用于实现跨阶段部分聚合 阅读详情

相关推荐

个人整理的数据集(手写中文数据、发票数据、快递单数据、车牌数据)

本人在工作生活中收集了各个方面比较多的真实的数据集如下: 一、手写中文数据集 1、档案类数据: 此数据集为手写档案数据,数量较大,大约128G,图像均未标注。 ex: 2、手写作文数据: 此数据集为手写作文数据,是大约800M左右,图像按行提供位置和内容标注,十分珍贵。 ex: 二、发票数据集: 1、增值税发票 此数据集包含了大量真实的增值税发票数据,大约9G,标注了发票位置数据,未提供详细标注。 ex: 2、购车发票 此数据集未提供标注。

weixin_43143224的博客 5883

不用Swagger,那我用啥?

除了rel​和path​两个属性之外,@RestResource​中还有一个属性,exported​表示是否暴露接口,默认为true​,表示暴露接口,即方法可以在前端调用,如果仅仅只是想定义一个方法,不需要在前端调用这个方法,可以设置exported​属性为false。SpringDoc扮演的角色毕竟不是业务功能,而是项目的辅助功能,所以,我们可以将之从业务中剥离,放到Actuator中,毕竟Actuator专干这种事。...

JavaShark的博客 543

告别仿真报错!手把手教你为Intel MAX10 FPGA定制IBIS模型(附Allegro Skill工具)

本文详细介绍了为Intel MAX10 FPGA定制IBIS模型的完整流程,解决信号完整性仿真中的管脚映射问题。通过Allegro Skill工具自动化处理管脚信息,优化IBIS模型关键段落,提升仿真效率和精度,适用于高速数字电路设计。

weixin_33217202的博客 326

微服务架构系列主题:生产环境关闭swagger方法

目录 swagger3 关闭配置(快捷方式) 配置原理 swagger2 关闭配置 方法一:@ConditionalOnProperty 方法二 @Profile 方法三 @Value 配置Docket 失效办法 swagger3 关闭配置(快捷方式) springfox: documentation: # 总开关(同时设置auto-startup=false,否则/v3/api-docs等接口仍能继续访问) enabled: false auto-startu

Larry的博客 6304

RK3588S开发板实战:手把手教你搞定IMX415摄像头驱动配置(附调试日志分析)

本文提供了一份详细的RK3588S开发板配置IMX415摄像头驱动的实战指南。内容涵盖从环境准备、内核驱动编译、设备树节点编写到调试日志分析的完整流程,并重点解析了摄像头调试过程中的常见问题与解决方案,帮助开发者快速完成驱动配置与功能验证。

weixin_28285943的博客 209

Hcaptcha验证码的‘免浏览器’破解思路:协议分析与N值算法逆向

本文深入解析Hcaptcha验证码的‘免浏览器’破解思路,通过协议分析与N值算法逆向,实现高效自动识别。文章详细拆解Hcaptcha的API交互流程,揭示关键参数`req`和`n`的生成机制,并提供轻量级实现方案,显著降低资源消耗,适用于大规模数据采集等场景。

weixin_30838873的博客 536

微服务下统一管理配置swagger

最近武汉瘟疫挺严重的,学校被封了.....在家完全没什么状态,感觉整个人都废了...昨天开始动工,记录一下微服务如何配置swagger和遇到的问题。 1.在工程下创建一个模块,用来统一管理swagger的api 没有启动类,在其他服务的pom中要依赖api这个模块。 swagger的maven依赖 <dependency> <groupId...

TextInfo的博客 4103

Triplet Loss调参实战:Margin选多少?距离函数用哪个?我的模型为什么训不动?

本文深入探讨了Triplet Loss调参中的关键问题,包括margin参数的选择、距离函数的比较以及模型训练不动的常见原因。通过实战案例和技术分析,提供了针对不同场景(如人脸识别、商品图像、文本匹配)的margin黄金区间,并对比了欧式距离与余弦相似度的适用场景。文章还介绍了困难样本挖掘的最新策略和模型诊断的实用清单,帮助开发者高效解决度量学习中的工程难题。

weixin_29050271的博客 414

传统spring整合swagger非springboot

1.springfox-swagger2可用于springboot,用spring报错,用swagger-springmvc 2.spring版本 &amp;amp;lt;spring.version&amp;amp;gt;4.1.5.RELEASE&amp;amp;lt;/spring.version&amp;amp;gt; 3.maven &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;group

weixin_42739423的博客 1660

DQN网络代码调用env.reset()后存储观测信息报错问题ValueError: setting an array element with a sequence.解决处理

**reset()函数返回的是一个array类型以及其中数据的type!模拟游戏进行学习任务。因此需要将observation指定为真正需要的array信息即可,得到的的变量observation类型与Agent存储时的。因此怀疑返回的observation有问题,于是通过。报错信息提示为数据维度不对应,也即最初通过。在强化学习DQN网络代码实现过程中,针对。

Vulcan_Q的博客 4093

《低功耗方法学》翻译——第一章:介绍

第一章:介绍

记录所学,分享知识,结识挚友 2069

JAPI 开源项目安装与使用指南

JAPI 开源项目安装与使用指南 本指南旨在帮助用户快速理解和上手 JAPI 开源项目。我们将从项目的目录结构、启动文件以及配置文件三个方面进行详细介绍。 1. 项目目录结构及介绍 JAPI的目录结构设计遵循了清晰和模块化的原则,以支持高效的开发和维护。以下是核心的目录结构及其简介: JAPI/ │ ├── src # 源代码目录 │ ├── main...

gitblog_00466的博客 567

网规第三版:第4章网络资源设备(完结)

第 4 章 网络资源设备 调整内容: 更新主流网络设备(交换机、路由器、防火墙)的技术参数与选型标准 增加国产化网络设备与信创产品的相关内容 精简已淘汰的设备类型与技术指标

鹿鸣天涯 268

你还在用Swagger?试试这个神器!

点击上方蓝色“方志朋”,选择“设为星标”回复“666”获取独家整理的学习资料!作者:Java旅途/ 周明尧(本文来自作者投稿)今天给大家安利一款接口文档生成器——JApiDocs。Swag...

方志朋的博客 147

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

你还在用 Swagger?试试这个神器!

Java技术栈www.javastack.cn关注阅读更多优质文章今天给大家安利一款接口文档生成器——JApiDocs。swagger想必大家都用过吧,非常方便,功能也十分强大。如果要说...

Java技术栈,分享最主流的Java技术 716

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

还在用 Swagger 管理文档?试试这款高颜值的工具

说真的,用过Apifox之后就再也不想回到 Swagger 了!它不仅界面美观,功能还特别强大。特别是对于团队协作来说,简直是效率神器!如果你还在纠结要不要换工具,我建议你先下载试用一下,保证你会爱上它的~🆓 个人使用有免费版💻 全平台支持(Windows/Mac/Linux)🔄 持续更新,体验越来越好怎么样,看完是不是也心动了?快来试试吧!相信你也会喜欢上这款颜值与才华并存的工具的!快去试试吧!

weixin_45017726的博客 1524

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

api响应泛型参数 swagger_你还在用 Swagger?试试这个神器!

今天给大家安利一款接口文档生成器——JApiDocs。Swagger想必大家都用过吧,非常方便,功能也十分强大。如果非要说Swaager有什么缺点,想必就是注解写起来比较麻烦。如果我说有一款不用写注解,就可以生成文档的工具,你心动了吗?他就是我们今天的主角——JApiDocs。下面我们一起来看看如何使用!一、添加依赖<dependency><groupId>io....

weixin_42119989的博客 680

api响应泛型参数 swagger_你还在用Swagger?试试这个神器!

(给ImportNew加星标,提高Java技能)作者:Java旅途/ 周明尧(本文来自作者投稿)今天给大家安利一款接口文档生成器——JApiDocs。Swagger 想必大家都用过吧,非常方便,功能也十分强大。如果非要说Swagger 有什么缺点,想必就是注解写起来比较麻烦。如果我说有一款不用写注解,就可以生成文档的工具,你心动了吗?他就是我们今天的主角——JApiDocs。下面我们一起...

weixin_34768234的博客 164

swagger隐藏实体类字段_你还在用 Swagger?试试这个神器!

Java技术栈www.javastack.cn关注阅读更多优质文章今天给大家安利一款接口文档生成器——JApiDocs。swagger想必大家都用过吧,非常方便,功能也十分强大。如果要说swagger有什么缺点,想必就是注解写起来比较麻烦。如果我说有一款不用写注解,就可以生成文档的工具,你心动了吗?他就是我们今天的主角——JApiDocs。下面我们一起来看看如何使用!一、添加依赖 io...

weixin_28987001的博客 1458

你还在用Swagger?试试这个神器

今天给大家安利一款接口文档生成器——JApiDocs。 Swagger想必大家都用过吧,非常方便,功能也十分强大。如果非要说Swaager有什么缺点,想必就是注解写起来比较麻烦。如果我说有一款不用写注解,就可以生成文档的工具,你心动了吗?他就是我们今天的主角——JApiDocs。 下面我们一起来看看如何使用! 一、添加依赖 <dependency> <groupId>io.github.yedaxia</groupId> <artifactId>jap

程序员麦冬的博客(公众号同名) 345

java使用原生swagger_你还在用 Swagger?试试这个神器!

今天给大家安利一款接口文档生成器——JApiDocs。swagger想必大家都用过吧,非常方便,功能也十分强大。如果要说swagger有什么缺点,想必就是注解写起来比较麻烦。如果我说有一款不用写注解,就可以生成文档的工具,你心动了吗?他就是我们今天的主角——JApiDocs。下面我们一起来看看如何使用!一、添加依赖io.github.yedaxiajapidocs1.3二、配置生成参数我们新建一个...

weixin_42514890的博客 515

还在用 Swagger?试试这款神器,功能真心强大!

介绍 smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,smart-doc在业内率先提出基于JAVA泛型定义推导的理念,完全基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中。 你只需要按照java-doc标准编写注释, smart-doc就能帮你生成一个简易明了的Markdown、HTML5、Postman、Collection2.0+、OpenAPI 3.0+的文档。 目前使用者 科大讯飞 小米 一加 顺丰 特点 零注解、

Java技术栈,分享最主流的Java技术 377

api响应泛型参数 swagger_你还在用 Swagger?试试这个神器,不香吗?

关注“Java技术迷”升职加薪不脱发!今天给大家安利一款接口文档生成器——JApiDocs。Swagger想必大家都用过吧,非常方便,功能也十分强大。如果非要说Swaager有什么缺点,想必就是注解写起来比较麻烦。如果我说有一款不用写注解,就可以生成文档的工具,你心动了吗?他就是我们今天的主角——JApiDocs。下面我们一起来看看如何使用!一、添加依赖<dependency&g...

weixin_36300275的博客 390

SpringBoot集成Swagger

作为一个以前后端分离为模式开发小组,我们每隔一段时间都进行这样一个场景:前端人员和后端开发在一起热烈的讨论"哎,你这参数又变了啊","接口怎么又请求不通了啊","你再试试,我打个断点调试一下.."。可以看到在前后端沟通中出现了不少问题。对于这样的问题,之前一直没有很好的解决方案,直到它的出现,没错...这就是我们今天要讨论的神器:swagger,一款致力于解决接口规范化、标准化、文档化的开源库,一款真正的开发神器。Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。

qq_41765777的博客 1202

Swagger界面丑、功能弱怎么破?用Postman增强下就给力了!

在使用Swagger的时候,你是否会有这种感觉:提交参数为JSON没法格式化,参数错了查找麻烦,返回结果没法折叠,太长了没法看!Swagger结合Postman使用后这一情况有很大改变,...

macrozheng的专栏 4612
上一篇: 8 场 5 胜,微服务 VS 单体架构
下一篇: 淦!女票问我能不能开发一个微信朋友圈、微博?
公众号-芋道源码
博客等级 码龄10年 1636粉丝 377原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值