刀锋利器:Knife4j助你轻松驾驭API文档

news2024/11/15 23:57:39

文章目录

      • 整合Knife4j
        • 引入依赖
        • 编写配置文件 法①
        • 编写配置文件 法②
        • 配置名词解释
        • 注解三兄弟 : @ApiOperation、@ApiParam、@ApiModel
      • 启动项目, 访问Knife4j测试
      • Knife4j优点
        • 支持全局参数
        • 支持离线文档
        • 支持API搜索

**技术派项目源码地址 : **

  • **Gitee : **技术派 - https://gitee.com/itwanger/paicoding
  • **Github : 技术派 - https://github.com/itwanger/paicoding **

Knife4j :

  • 官方文档:https://doc.xiaominfo.com/
  • 码云地址:https://gitee.com/xiaoym/knife4j
  • 示例地址:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo

image.png

整合Knife4j

引入依赖
<knife4j.version>4.0.0</knife4j.version>

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
    <version>${knife4j.version}</version>
</dependency>
编写配置文件 法①
@Configuration
@EnableOpenApi
public class SwaggerConfig {
    @Bean
    public Docket docket() {
        Docket docket = new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo()).enable(true)
                .select()
                //apis: 添加swagger接口提取范围
                .apis(RequestHandlerSelectors.basePackage("www.paicoding.controller"))
                .paths(PathSelectors.any())
                .build();

        return docket;
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("技术派")
                .description("一个基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等技术栈实现的社区系统,采用主流的互联网技术架构、全新的UI设计、支持一键源码部署,拥有完整的文章&教程发布/搜索/评论/统计流程等,代码完全开源,没有任何二次封装,是一个非常适合二次开发/实战的现代化社区项目👍 。")
                .contact(new Contact("沉默王二", "https://paicoding.com","www.qing_gee@163.com"))
                .version("v1.0")
                .build();
    }
}
编写配置文件 法②

knife4j:
  enable: true
  openapi:
    title: 技术派
    description: 一个基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等技术栈实现的社区系统,采用主流的互联网技术架构、全新的UI设计、支持一键源码部署,拥有完整的文章&教程发布/搜索/评论/统计流程等,代码完全开源,没有任何二次封装,是一个非常适合二次开发/实战的现代化社区项目👍version: 1.0.0
    concat:
      - 一灰灰 | 楼仔 | 沉默王二
      - https://paicoding.com
      - https://github.com/itwanger/paicoding
    license: Apache License 2.0
    license-url: https://github.com/itwanger/paicoding/blob/main/License
    email: bangzewu@126.com
    group:
      admin:
        group-name: 后台接口分组
        api-rule: package
        api-rule-resources:
          - com.github.paicoding.forum.web.admin
      front:
        group-name: 前台接口分组
        api-rule: package
        api-rule-resources:
          - com.github.paicoding.forum.web.front
配置名词解释

①、knife4j.enable: 设置为 true 以启用 Knife4j,将在应用程序中启用 Knife4j UI。
②、knife4j.openapi: 这个属性包含了 Swagger API 文档的基本元数据信息,如标题、描述、版本等。

  • title: API 文档的标题。
  • description: API 文档的详细描述。
  • version: API 文档的版本号。
  • concat: API 文档的作者信息。包括作者名、网站和 GitHub 仓库。
  • license: API 文档的许可证类型。
  • license-url: API 文档许可证的链接。
  • email: API 文档作者的联系邮箱。

③、knife4j.group: 定义 API 分组。这里有两个分组:admin 和 front。
admin: 后台接口分组。

  • group-name: 分组名称。
  • api-rule: 分组规则,这里使用的是包规则。
  • api-rule-resources: 指定包名,Knife4j 将扫描此包下的所有 API 接口并将它们添加到此分组。

front: 前台接口分组,它下面的属性不再赘述,和 admin 一样。

注解三兄弟 : @ApiOperation、@ApiParam、@ApiModel
  1. @ApiOperation:用于描述一个具体的 API 操作。通常用于标注在 Controller 类的方法上。
  • value:API 操作的简短描述,会显示在 API 文档中。
  • notes:API 操作的详细描述,会显示在 API 文档中。
  • tags:API 操作的标签,用于对 API 进行分类和分组。
@ApiOperation(value = "获取用户信息", notes = "根据用户 ID 获取用户详细信息")
  1. @ApiParam:用于描述 API 操作的参数。通常用于标注在 Controller 类的方法参数上。
  • name:参数名称。
  • value:参数描述。
  • required:指示参数是否是必需的,默认为 false。
  • defaultValue:参数的默认值。
  • allowableValues:允许的参数值范围。
public ResponseEntity<User> getUser(@ApiParam(value = "用户 ID", required = true) 
                                    @PathVariable("id") Long id) {
    // ...
}
  1. @ApiModel:描述一个 API 操作返回的数据模型, 通常用于标注在实体类或 DTO 类上。
  • value:模型名称。
  • description:模型描述。
@ApiModel(value = "用户", description = "用户详细信息")
public class User {
    // ...
}

启动项目, 访问Knife4j测试

**访问Knife4j地址 : **http://localhost:8080/doc.html
image.png

Knife4j优点

支持全局参数

image.png

支持离线文档

image.png
image.png

支持API搜索

image.png

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

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

相关文章

解密键盘输入:探索设备控制器的奥秘

流程初探 键盘是我们最常用的输入硬件设备之一。作为程序员&#xff0c;你知道当我们敲击键盘上的字母"A"时&#xff0c;操作系统会发生什么吗&#xff1f;下面我将简要介绍整个过程&#xff0c;以便你更容易理解为什么需要这些组件。 首先&#xff0c;让我们来看看…

Processing练习之鼠标控制线段粗细

案例代码如下&#xff1a; import processing.pdf.*; import java.util.Calendar; boolean savePDF false; int tileCount 20; int actRandomSeed 0; int actStrokeCap ROUND; void setup(){ size(600,600); } void draw(){ if(savePDF)beginRecord(PDF, timestamp()"…

回调函数,字符函数,字符串函数

前言&#xff1a;上一趴我们学习了指针。那么今天我们来学习新的知识&#xff0c;回调函数&#xff0c;字符函数&#xff0c;字符串函数。 1 回调函数 什么是回调函数呢&#xff1f;回调函数就是通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作…

加热系统加入达温即停和保温功能

加热系统加入达温即停和保温功能 引言 ​ 我们前一节, 是通过控制io口, 直接控制加热的开关, 但是这太简单粗暴了, 如果只是那样, 和普通的家居电器,是没区别的, 我们想要更智能一点, 就是像咱们自己家的热水壶那样, 水烧滚了(水温达到100摄氏度), 就自动停止了. 加热功能&a…

SQL每日一练-0816

今日SQL题&#xff1a;计算每个项目的年度收入增长率 难度系数&#xff1a;&#x1f31f;☆☆☆☆☆☆☆☆☆ 1、题目要求 计算每个项目每年的收入总额&#xff0c;并计算项目收入环比增长率。找出每年收入增长率最高的项目。输出结果显示年份、项目ID、项目名称、项…

JS周结 day0817

ok了家人们&#xff0c;今天这周学习了JavaScript&#xff0c;我们一起看一下吧 一.JavaScript概述 1.1 应用场景 JavaScript 用来做前端页面校验 JavaScript 可以实现网页的一些动画效果&#xff0c;例如&#xff1a;轮播图 1.2 JavaScript介绍 JavaScript 是一门跨平台、…

华为OD(C卷,200分)- 智能驾驶

(C卷,200分)- 智能驾驶 题目描述 有一辆汽车需要从 m * n 的地图左上角(起点)开往地图的右下角(终点),去往每一个地区都需要消耗一定的油量,加油站可进行加油。 请你计算汽车确保从从起点到达终点时所需的最少初始油量。 说明: 智能汽车可以上下左右四个方向移动 地图…

Monaco Editor组件使用详解

Monaco Editor 是由微软开发并开源的一款代码编辑器&#xff0c;它是 Visual Studio Code&#xff08;VS Code&#xff09;的核心部分。Monaco Editor 提供了丰富的特性&#xff0c;包括语法高亮、代码折叠、代码提示&#xff08;IntelliSense&#xff09;、多光标选择、搜索和…

RabbitMQ消息队列总结

RabbitMQ那些事 参考一. `RabbitMQ`介绍1.1 Java工程师1.1.1 RabbitMQ学习目标1.1.2 消息队列介绍1.1.3 RabbitMQ介绍各自属性介绍(❤❤❤)二. `RabbitMQ`安装1. 基于Linux1.1 安装1.2 常用命令1.3 后台管理开启与面板介绍三. 客户端`SDK`操作(❤❤了解)1. 客户端依赖1. 生产者…

【区块链+金融服务】中国银联区块链可信存证服务 | FISCO BCOS应用案例

随着金融行业信息化的快速推进&#xff0c;“互联网 金融”业务产生了海量的电子数据。例如&#xff0c;截止到 2022 年第二季度&#xff0c; 全国累计信用卡发卡数量约 8.07 亿张&#xff0c;累计银行卡应偿信贷余额为 8.66 万亿元&#xff0c;累计信用卡逾期半年未尝信贷 总…

18124 N皇后问题

### 详细分析 这是一个经典的N皇后问题。我们需要在N\*N的棋盘上放置N个皇后&#xff0c;使得任意两个皇后不在同一行、同一列或同一对角线上。可以使用回溯算法来解决这个问题。 ### 伪代码 1. 定义一个函数countSolutions&#xff0c;输入为N&#xff0c;输出为N皇后问题的解…

尚硅谷MYSQL(5-6章)

排序和分页 排序 如果没有使用排序操作的话 查询出来的数据是按添加的顺序排序的 ORDER BY是来进行排序的 后面可以添加ASC升序 DESC降序 如果后面没有显示指明排序的方式的话 则默认按照升序排序 where中不能使用列的别名 我们在使用sql语句的时候 她的执行顺序不是从第一…

Python 环境搭建指南 超详细

Python是由荷兰⼈吉多范罗苏姆&#xff08;Guido von Rossum&#xff0c;后⾯都称呼他为Guido&#xff09;发明的⼀种编程语言 1. 1989年圣诞节&#xff1a;Guido开始写Python语⾔的编译器。2. 1991年2⽉&#xff1a;第⼀个Python解释器诞⽣&#xff0c;它是⽤C语⾔实现的&…

STM32之点亮LED灯

使用固件库实现LED点灯 LED灯&#xff1a; LED灯&#xff0c;是一种能够将电能转化为可见光的半导体器件 控制LED灯&#xff1a; LED灯的正极接到了3.3V&#xff0c;LED灯的负极接到了PA1&#xff0c;也就是GPIOA1引脚 只需要控制PA1为相对应的低电平&#xff0c;即可点亮对…

政务大数据解决方案(十)

政务大数据解决方案通过建立全面的集成数据平台&#xff0c;整合来自各政府部门的异构数据&#xff0c;运用大数据分析、人工智能和机器学习技术对数据进行深度挖掘与智能化处理&#xff0c;提供实时精准的决策支持&#xff0c;从而提升政策制定和实施的科学性与效率。该方案包…

retrofit+livedata+viewModel+moshi处理数据

1.从源码角度看&#xff0c;只需要定义一个CallAdapterFactory 处理结果livedata接受默认的CallAdapterFactory 是DefaultCallAdapterFactory // // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) //package retrofit2;i…

那不勒斯足球俱乐部在 The Sandbox 中启动

访问 The Sandbox 中的那不勒斯足球俱乐部快闪商店&#xff0c;赢取比赛门票和签名商品。 我们很高兴地宣布&#xff0c;我们将与意大利著名职业足球俱乐部那不勒斯足球俱乐部展开合作&#xff0c;在 4 个 UGC 体验中开设 “快闪商店”。在这个以传奇球队为灵感来源的独特数字…

[Meachines] [Medium] poison LFI+日志投毒+VNC权限提升

信息收集 IP AddressOpening Ports10.10.10.84TCP:22,80 $ nmap -p- 10.10.10.84 --min-rate 1000 -sC -sV 22/tcp open ssh OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0) | ssh-hostkey: | 2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA) | 256 …

Linux - 基础工具使用

文章目录 一、yum1、介绍2、功能3、语法4、使用 二、rzsz1、安装rzsz的指令2、介绍3、使用 三、vim基础使用1、介绍2、基础使用 四、gcc/g使用1、生成可执行文件过程2、语法3、常用选项4、编译过程5、动静态库6、链接外部库 一、yum 1、介绍 Linux中的yum是一个强大的软件包管…

部署 K8s 图形化管理工具 Dashboard

文章目录 一、Dashboard 概述二、GitHub 地址三、Dashboard 部署安装1、选择兼容版本2、下载配置文件3、添加 Dashboard 的Service类型4、应用部署5、查看 kubernetes-dashboard 命名空间下资源状态6、创建访问账户7、授权8、获取账号token9、1.24 版本以后的需要创建一个Pod 四…