Springboot 整合 Knife4j (API文档生成工具)

news2024/11/14 13:49:45

目录

一、Knife4j 介绍

二、Springboot 整合 Knife4j

1、pom.xml中引入依赖包

2、在application.yml 中添加 Knife4j 相关配置

3、打开 Knife4j UI界面

三、关于Knife4j框架中常用的注解

1、@Api

2、@ApiOperation

​3、@ApiOperationSupport(order = X)

​4、@ApiImplicitParam  

5、@ApiModel / @ApiModelProperty

四、支持接口调试

五、离线下载


一、Knife4j 介绍

Knife4j 是一个基于 Swagger 构建的开源 Java API 文档工具,主要包括两大核心功能:文档说明和在线调试。使用简单的配置和注解就可以节省写接口文档的时间了,舒服!😄😄😄

二、Springboot 整合 Knife4j

1、pom.xml 中引入依赖包

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>

2、在 application.yml 中添加 Knife4j 相关配置

server:
  port: 5555


knife4j:
  enable: true
  openapi:
    title: 接口文档
    description: "接口文档生成"
    email: ""
    concat: admin
    url: https://docs.xiaominfo.com
    version: v4.0
    license: Apache 2.0
    license-url: https://stackoverflow.com/
    terms-of-service-url: https://stackoverflow.com/
    group:
      test1:
        group-name: 分组名称
        api-rule: package
        api-rule-resources:
          - com.example.springbootzy

3、打开 Knife4j UI界面

浏览器地址栏输入:http://127.0.0.1:服务端口号/doc.html

三、关于Knife4j框架中常用的注解

1、@Api

作用于Controller类上,通过此注解的tags属性,可以指定模块名称,并且模块名称前添加数字, Knife4j会根据这些数字将各个模块做升序排列。

@RequestMapping("/common")
@RestController
@Api(tags= "01 通用模块")
public class CommonController {

    @PostMapping("/queryByCondition")
    public String queryByCondition(@RequestBody QueryCondition queryCondition) {
        return "this is common demo";
    }
}


@RestController
@RequestMapping("/user")
@Api(tags= "02 用户模块")
public class UserController {

    @PostMapping("/queryUser")
    public String queryUser(@RequestBody QueryCondition queryCondition) {
        return "this is user demo";
    }
}


@Api(tags= "03 公司模块")
@RestController
@RequestMapping("/company")
public class CompanyController {

    @PostMapping("/queryCompany")
    public String queryCompany(@RequestBody QueryCondition queryCondition) {
        return "this is company demo";
    }
}

2、@ApiOperation

作用于 Controller 类中的方法上,用于描述 API 接口的功能和作用。

@RequestMapping("/common")
@RestController
@Api(tags= "01 通用模块")
public class CommonController {

    @ApiOperation("根据条件查询数据")
    @PostMapping("/queryByCondition")
    public String queryByCondition(@RequestBody QueryCondition queryCondition) {
        return "this is common demo";
    }
}

 3、@ApiOperationSupport(order = X)

作用于 Controller 类中的方法上,通过此注解的 order 属性(int),可以指定排序序号。

@RequestMapping("/common")
@RestController
@Api(tags= "01 通用模块")
public class CommonController {

    @ApiOperation("根据条件查询数据")
    @ApiOperationSupport(order = 2)
    @PostMapping("/queryByCondition")
    public String queryByCondition(@RequestBody QueryCondition queryCondition) {
        return "this is common demo";
    }

    
    @ApiOperation("保存")
    @ApiOperationSupport(order = 3)
    @PostMapping("/add")
    public String add(@RequestBody QueryCondition queryCondition) {
        return "this is add";
    }

    
    @ApiOperation("更新")
    @ApiOperationSupport(order = 1)
    @PostMapping("/update")
    public String update(@RequestBody QueryCondition queryCondition) {
        return "this is update";
    }
}

 4、@ApiImplicitParam  

 作用于 Controller 类中的方法上,用于描述方法入参的详细信息。


    @ApiOperation("根据主键ID查询")
    @ApiOperationSupport(order = 4)
    @ApiImplicitParam(name = "id", value = "主键ID", required = true, dataType = "Long", paramType = "path")
    @PostMapping("/queryById/{id}")
    public String queryById(@PathVariable Long id) {
        return "this is queryById";
    }

5、@ApiModel / @ApiModelProperty

@ApiModel:作用于 POJO 类上,描述该对象的作用。

@ApiModelProperty:作用于 POJO 类的属性上,描述参数信息。

@ApiModel("通用查询条件实体")
@Data
public class QueryCondition {

    @ApiModelProperty(value = "页码", required = true, example = "1")
    private Integer pageSize;

    @ApiModelProperty(value = "每页显示数量", required = true, example = "20")
    private Integer pageNum;

    @ApiModelProperty(value = "主键ID", required = false, example = "1",dataType ="Long")
    private Long id;

    @ApiModelProperty(value = "名称", required = false, example = "张三")
    private String name;
}

四、支持接口调试

调用接口需要传 Token 的时候,可以在【全局参数配置】中添加 Token(或叫:Authorization,具体看自己项目定义):

五、离线下载


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

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

相关文章

模态框被div class=modal-backdrop fade in覆盖的问题

模态框被<div class"modal-backdrop fade in">覆盖的问题 起因&#xff1a;在导入模态框时页面被一层灰色的标签覆盖住 F12查看后发现是一个<div class"modal-backdrop fade in"> 一开始以为是z-index的问题&#xff0c;但经过挨个修改后感觉…

SpringBoot项目如何打包成war包,并部署在tomcat上运行

项目场景&#xff1a; 正常情况下&#xff0c;我们开发 SpringBoot 项目&#xff0c;由于内置了Tomcat&#xff0c;所以项目可以直接启动&#xff0c;部署到服务器的时候&#xff0c;直接打成 jar 包&#xff0c;就可以运行了。 有时我们会需要打包成 war 包&#xff0c;放入外…

【漏洞复现】福建科立迅通信指挥调度平台down_file.php sql注入漏洞

漏洞描述 福建科立迅通信调度平台 20240318 以及之前版本存在一个严重漏洞,影响了文件 api/client/down_file.php 的一个未知功能。攻击者可以通过操纵参数 uuid 发起 SQL 注入攻击。攻击者可以远程发起攻击。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守…

ROS机器人入门第一课:ROS快速体验——python实现HelloWorld

文章目录 ROS机器人入门第一课&#xff1a;ROS快速体验——python实现HelloWorld一、HelloWorld实现简介&#xff08;一&#xff09;创建工作空间并初始化&#xff08;二&#xff09;进入 src 创建 ros 包并添加依赖 二、HelloWorld(Python版)&#xff08;二&#xff09;进入 r…

Axure 中继器的Repeater属性的使用

dataCount 中继器当中存在多少条数据&#xff0c;总数。 visibleltemCount 中继器列表中可见项数量&#xff0c;也就是当前页面显示的数量。 pageCount 获取中继器分页的总数量&#xff0c;即能够获取分页后共有多少页。 pageIndex 获取中继器当前显示的页码

易大师B版运势测算系统源码-八字周易运势塔罗-含视频搭建教程

2024最新易大师B版运势测算系统源码-八字周易运势塔罗等测算源码 基于上个版本再次做了数据优化和部分bug修复&#xff0c;青狐独家维护版本。 测算周易系统一直都是很好变现和运营的&#xff0c;玩法操作也比较简单&#xff0c;也很容易被百度收录推广。 大致功能&#xff1a…

关系型数据库mysql(3)索引

目录 一.索引的概念 二.索引的作用 三.创建索引的原则依据 四.索引的分类 五.索引的创建 5.1 普通索引 5.1.1 直接创建索引 5.1.2 修改表方式创建 5.1.3 创建表的时候指定索引 5.2 唯一索引 5.2.1 直接创建唯一索引 5.2.2 修改表方式创建 5.2.3 创建表的时候指…

NX二次开发控制Button的敏感性(是否可用)

一、概述 最近看到一个控制Button灵敏度的功能觉得有点意思&#xff0c;今后的二次开发中避免不了使用&#xff0c;今天做以下笔记&#xff0c;信息来源于【小C-NX】的博客。俗话说的好&#xff0c;三人行必有我师焉。再次致敬伟大的NX二次开发爱好者&#xff0c;思维的碰撞可能…

【性能测试】移动测试md知识总结第2篇:主流移动端自动化测试工具,学习目标【附代码文档】

移动测试完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;移动端测试课程介绍&#xff0c;移动端测试知识概览学习主要内容,学习目标,学习目标,1. window安装andorid模拟器。主流移动端自动化测试工具&#xff0c;Appium环境搭建学习目标,学习目标,学习目标…

vue3父子通信、跨层通信

子传父 通过 ref标识 获取真实的 dom对象或者组件实例对象 父组件获取子组件内部属性和方法 顶层组件向任意的底层组件传递数据和方法&#xff0c;实现跨层组件通信 非响应式数据父修改不了子的内容 子组件调用父组件方法

yolov9报错:AttributeError: ‘list‘ object has no attribute ‘view‘的两种解决方法

1. 报错问题 In loss_tal.py: pred_distri, pred_scores torch.cat([xi.view(feats[0].shape[0], self.no, -1) for xi in feats], 2).split( (self.reg_max * 4, self.nc), 1) The error is as follows&#xff1a; AttributeError: list object has no attribute vie…

显卡基础知识及元器件原理分析

显卡应该算是是目前最为火热的研发方向了&#xff0c;其中的明星公司当属英伟达。 当地时间8月23日&#xff0c;英伟达发布截至7月30日的2024财年第二财季财报&#xff0c;营收和利润成倍增长&#xff0c;均超市场预期。 财报显示&#xff0c;第二财季英伟达营收为135.07 亿美…

【题目】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷

极安云科专注职业教育技能竞赛培训4年&#xff0c;包含信息安全管理与评估、网络系统管理、网络搭建等多个赛项及各大CTF模块培训学习服务。本团队基于赛项知识点&#xff0c;提供完整全面的系统性理论教学与技能培训&#xff0c;成立至今持续优化教学资源与讲师结构&#xff0…

【毕设级项目】基于ESP8266的家庭灯光与火情智能监测系统——文末源码及PPT

目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …

Postgresql数据库入门简介

Postgresql入门 1.Postgresql数据库简介 PostgresQL是一个功能强大的开源数据库系统。经过长达15年以上的积极开发和不断改进&#xff0c;PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSql可以运行在所有主流操作系统上&#xff0c;包括Linux…

运动想象 (MI) 迁移学习系列 (14) : EEGNet-Fine tuning

运动想象迁移学习系列:EEGNet-Fine tuning 0. 引言1. 主要贡献2. 提出的方法2.1 EEGNet框架2.2 微调 3. 实验结果3.1 各模型整体分类结果3.2 算法复杂度比较3.3 不同微调方法比较 4. 总结欢迎来稿 论文地址&#xff1a;https://www.nature.com/articles/s41598-021-99114-1#cit…

【Git】第一课:Git的介绍

简介 什么是Git? Git是一个开源的分布式版本控制系统&#xff0c;用于跟踪代码的改变和协同开发。它最初由Linus Torvalds为了管理Linux内核开发而创建&#xff0c;现已成为开源软件开发中最流行的版本控制系统&#xff0c;没有之一。Git允许多人同时在不同的分支上工作&…

ubuntu - 编译 linphone-sdk

业务需求需要定制sdk&#xff0c;首先声明我们需要的是在Android4.4上跑的sdk&#xff0c;因此本次编译的sdk最低支持为19&#xff08;不同版本需要的环境不一致&#xff09;&#xff0c;编译过程较容易&#xff0c;难点在于环境配置 环境准备 Ubuntu 18.04.6 android-sdk_r24.…

Python解释器介绍及安装和目录文件说明

什么是解释器&#xff1f; Python 的代码必须要通过解释器才能运行&#xff0c; 比如我们自己书写python代码想要实现最近本的文字打印&#xff1a;print(hello world!)。但电脑不知道你写的这句代码是干什么用的&#xff0c;当有了python解释器后&#xff0c;Python 解释器会把…

专业135+总分400+重庆邮电大学801信号与系统考研经验重邮电子信息与通信工程,真题,大纲,参考书。

今年分数出来还是比较满意&#xff0c;专业801信号与系统135&#xff0c;总分400&#xff0c;没想到自己也可以考出400以上的分数&#xff0c;一年的努力付出都是值得的&#xff0c;总结一下自己的复习心得&#xff0c;希望对大家复习有所帮助。专业课&#xff1a;&#xff08;…