IntelliJ+SpringBoot项目实战(三)---基于源代码直接生成漂亮的接口文档

        在SpringBoot中可以集成代码插件自动生成接口文档,而且生成的文档很漂亮,除了接口功能介绍、传入参数、响应参数,还具体类似postman的功能,可调用接口进行测试,另外还可以下单WORD版、.md,html格式的文档。下面我们先看下接口文档的展示效果:

下面是实体类参数说明界面:

下面是文档下载界面:

下载的MD文件:

html界面:

类似PostMan的 在线调试界面:

提供JS和TS的调用示例:

在线接口文档生成插件可以帮助我们生成可交付的接口文档,大大节省了项目交付的编写开发文档时间。接下来我介绍下如何在SpringBoot中整合在线接口文档插件。

    这个接口文档插件交knife4j,是一个集Swagger2和OpenAPI3为一体的增强解决方案。首先我们在openjweb-cloud的主工程中增加knife4j的依赖、lombok依赖(这个使用@Data注解,在实体类中使用),阿里的fastjson(测试接口返回的用JSON结构不能在文档中生成响应参数的说明):

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version>
</dependency><!--    lombok    -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.2</version>
</dependency><!--   knife4j     -->
<dependency><groupId>com.github.xiaoymin</groupId><!--<artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.4</version>--><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.4.0</version></dependency>

然后在openjweb-sys子工程的org.openjweb.config下增加一个Swagger2配置类,代码如下:

@Configuration
//@EnableSwagger2
@EnableSwagger2WebMvc
//@EnableKnife4j
public class Swagger2Config {@Bean(value = "dockerBean")public Docket dockerBean() {//指定使用Swagger2规范Docket docket=new Docket(DocumentationType.SWAGGER_2).apiInfo(new ApiInfoBuilder().title("OpenJWeb低代码平台开发文档")//描述字段支持Markdown语法.description("# OpenJWeb低代码开发平台WXID: openjweb") //产品简介.termsOfServiceUrl("https://github.com/openjweb/cloud/tree/master")//API服务条款.contact("29803446@qq..com")//联系人.version("1.0")//版本号.build())//分组名称.groupName("OpenJWeb低代码平台")//左上角搜索框---分组名称.select()//这里指定Controller扫描包路径.apis(RequestHandlerSelectors.basePackage("org.openjweb")).paths(PathSelectors.any()).build();return docket;}
}

注意每个参数对应首页的显示位置可以看首页的图。这些参数指定了文档标题、项目介绍、服务条款、联系人、版本号等。

接下来创建一个实体类CommUser,因为后面示例接口需要返回一个CommUser类型的返回值,在文档中可自动展示返回值说明,下面在org.openjweb.sys.entity下创建一个CommUser类:

package org.openjweb.sys.entity;import io.swagger.annotations.ApiModelProperty;
import lombok.Data;@Data
public class CommUser {@ApiModelProperty(value ="登录账号",required = true)private String loginId;@ApiModelProperty(value ="用户昵称")private String username;@ApiModelProperty(value ="真实姓名")private String realName;@ApiModelProperty(value ="用户性别:男M 女F")private String userSex;}

注意每个属性都增加@ApiModelProperty注解,这样文档中可以显示相应的参数说明。

然后我们创建一个Controller类或者API类,在org.openjweb.sys.api下建一个接口类:

@RestController
@RequestMapping("/ucenter")
@Api(tags = "admin-用户管理")
public class CommUserApi {@ApiOperation("用户详情")@ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名称", paramType = "query"),@ApiImplicitParam(name = "province", value = "所属省份", paramType = "query")})@GetMapping("info")public CommUser getUserInfo(@RequestParam(value = "username")String username, @RequestParam(value = "province")String province){//public CommUser getUserInfo( String username, String province){CommUser user = new CommUser();user.setUserSex("男");user.setUsername(username);user.setRealName("王先生");user.setLoginId("abao");return user;}
}

类头部标注此类的接口说明@Api(tags = "admin-用户管理"),这个在文档展示的时候是一个菜单组,然后方法上也增加注解@ApiOperation("用户详情"),这个描述接口的功能,然后@ApiImplicitParams,是接口参数说明,注意接口参数的命名需要和方法参数的(@RequestParam的命名保持一致。

接下来在openjweb-sys子工程的resource目录下建2个文件,一个是application.yml,存放标准配置,一个application-dev.yml是个性化参数配置,application.yml里:

spring:profiles:active: dev

指定当前使用application-dev.yml

application-dev.yml里指定启动端口:

server:port: 8001

配置好以后启动系统管理的应用OpenjwebSysApplication,启动后访问:

http://localhost:8001/ucenter/info?username=2&province=2

接口文档访问地址:

http://localhost:8001/doc.html

显示帮助文档界面:

项目代码见Github

 

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

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

相关文章

TemplatesImpl 在Shiro中的利用链学习1

一、前言 在前面的学习中&#xff0c;我们学习了CC1、CC6链&#xff0c;其中CC1链受限于Java8u71版本&#xff0c;而CC6则是通杀的利用链&#xff1b;后来又将 TemplateImpl 融入到 CommonsCollections 利用链中&#xff0c;绕过了 InvokerTransformer 不能使用的限制&#xf…

中仕公考:2025年省考请注意!

打算参加25年省考的考生们注意啦!如果打算参加2025年公务员省考&#xff0c;从这个时间点开始备考刚刚好&#xff0c;如果还不知道怎么备考的&#xff0c;看这篇就够了! 省考流程&#xff1a; 网上报名——资格审查——确认缴费——查看报名序号——准考证打印——笔试——成…

开发RAG应用,你必须知道的7个Embedding模型

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;Embedding模型是将文本数据转化为数值向量的核心技术&#xff0c;从而让计算机能够便捷地衡量文本间的语义关联&#xff0c;这种表示法已成为多种基础NLP任务的核心&#xff0c;如文本相似度判定、语义搜索、信息检索…

基于Java+SpringBoot学生成绩管理系统

一、作品包含 源码数据库设计文档全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据库&…

Kong API网关,微服务架构中,你看到就不想错过的选型

今天&#xff0c;很多公司都采用微服务架构来处理复杂业务&#xff0c;但随着服务数量增加&#xff0c;API管理成了一项繁重任务。Kong API网关&#xff0c;作为一款高性能的开源API网关&#xff0c;给开发者带来了极大便利。它不仅可以简化API的调用和管理&#xff0c;还拥有丰…

计算机毕业设计 | springboot+vue汽车修理管理系统 汽修厂系统(附源码)

1&#xff0c;项目背景 在如今这个信息时代&#xff0c;“汽车维修管理系统” 这种维修方式已经为越来越多的人所接受。在这种背景之下&#xff0c;一个安全稳定并且强大的网络预约平台不可或缺&#xff0c;在这种成熟的市场需求的推动下&#xff0c;在先进的信息技术的支持下…

使用京东API接口进行支付结算有哪些注意事项?

用京东API接口进行支付结算时&#xff0c;需要注意以下几个事项&#xff1a; 遵守京东开放平台规定&#xff1a;在使用京东API接口时&#xff0c;必须遵守京东开放平台的相关规定&#xff0c;不得滥用接口或进行非法操作。 保护用户隐私&#xff1a;为了保护用户隐私&#xff…

全国宪法宣传周答题活动怎么做

在12月4日全国宪法宣传周即将到来之际&#xff0c;越来越多的企业单位开始举办线上知识竞赛答题活动&#xff0c;以下是一个知识竞赛答题小程序的基本功能&#xff1a; 一、了解活动信息&#xff1a;确定答题活动的开始时间、结束时间以及是否分阶段进行等。不同的答题活动时…

【debug】QT 相关问题error汇总 QT运行闪退 QT5升级到QT6注意要点

总结一下碰到过的所有问题error以及解决方案 如果这个文档未帮助到你&#xff0c;仍有bug未解决&#xff0c;可以在下方评论留言&#xff0c;有偿解决。 qt的UI更新之后构建后发现没有变化 取消项目中的Shadow build的勾选&#xff0c;作用是取消影子构建&#xff0c;此后构建目…

信捷 PLC C语言 POU 指示灯交替灭1秒亮1秒

1.在全局变量表中定义2个定时器变量timer1,timer2 名称 类型 timer1 TMR_FB False -- False False timer2 TMR_FB False -- False False ot BOOL False -- False False ot表示指示灯 2.新建pou…

【Linux进程篇3】说白了,Linux创建进程(fork父子进程)也就那样!!!

--------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤&#xff1a;没人可以好运一生&#xff0c;只有努力才是一生的护身符&#xff0c;不放弃、不辜负。 -----------------------…

使用服务器时进行深度学习训练时,本地必须一直保持连接状态吗?

可以直接查看方法&#xff0c;不看背景 1.使用背景2. 方法2.1 screen命令介绍2.2 为什么要使用screen命令2.3 安装screen2.4 创建session2.5 查看session是否创建成功2.6 跳转进入session2.7 退出跑代码的session2.8 删除session 1.使用背景 我们在进行深度学习训练的时候&…

防火墙笔记地十二天

1.IPSEC协议簇 IPSEC协议簇 --- 基于网络层的&#xff0c;应用密码学的安全通信协议组 IPV6中&#xff0c;IPSEC是要求强制使用的&#xff0c;但是&#xff0c;IPV4中作为可选项使用 IPSEC可以提供的安全服务 机密性 --- 数据加密 完整性 --- 防篡改 可用性 数据源鉴别 -…

即时设计:Sketch的云端版本控制

设计师们经常面临的一个挑战是设计软件的频繁更新&#xff0c;尤其是Sketch这类流行工具。每次更新可能会修复一些旧bug并增加新功能&#xff0c;但同时也可能导致与旧版本的不兼容问题&#xff0c;尤其是在不同工作环境中的电脑性能差异可能导致文件兼容性问题。那么&#xff…

什么是网络安全CTF有何意义?该如何入门?

什么是网络安全CTF?有何意义 &#xff1f;该如何入门 &#xff1f; 什么是网络安全CTF? CTF在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。它起源于1996年DEFCON&#xff0c;以代替之前通过互相发起真实攻击进行技术比拼的方式。发展至今&#xff…

【Window主机访问Ubuntu从机——Xrdp配置与使用】

使用Xrdp在Window环境下远程桌面访问Ubuntu主机 文章目录 Ubuntu安装图形化界面Ubuntu安装Xrdp通过网线连接两台主机Window主机有线连接配置Ubuntu从机设置测试有线连接 Window主机打开远程桌面功能参考文章总结 Ubuntu安装图形化界面 sudo apt update sudo apt upgrade sudo …

Python-基础语法·上(2)

目录 常量和表达式 变量的语法 定义变量 使用变量 变量的类型 整型与浮点型 字符串 布尔 为什么要有这么多类型? 动态类型特性 注释 输入输出 通过控制台输出 通过控制台输入 运算符 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他 python的一些小练…

【go从零单排】panic、recover、defer

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;panic 是一种用于处理异常情况的机制。它允许程序在遇到…

【Windows erver】配置高性能电源管理

操作场景 在 Windows Server 操作系统上&#xff0c;需要配置高性能电源管理&#xff0c;才能支持实例软关机&#xff0c;否则云服务器控制台只能通过硬关机的方式关闭实例。本文档以 Windows Server 2012 操作系统为例&#xff0c;介绍配置电源管理的方法。 操作说明 修改电…

十大内衣洗衣机排名:2024十大实力强大内衣洗衣机推荐

现在洗衣机已经是现代家庭的必备家电&#xff0c;它给我们带来了更加方便舒适的生活。但即使是有了洗衣机大家还是不会将所有的衣物都丢进大型洗衣机洗。尤其是内衣裤、袜子&#xff0c;很多人都是选择手洗的&#xff0c;觉得这样的清洁方式才能清洗干净&#xff0c;但其实事实…