利用Knife4j注解实现Java生成接口文档

文章目录

  • 1、简介
  • 2、生成文档
  • 3、系列注解
    • 3.1、@Api
    • 3.2、@ApiResponses和@ApiResponse
    • 3.3、@ApiOperation
    • 3.4、@Pathyvariable⭐
    • 3.5、@RequestBody
    • 3.6、@ApiOperationSupport
    • 3.7、@ApiImplicitParams 和 @ApiImplicitParam
    • 3.8、@ApiModel
    • 3.9、@ApiModelProperty

​🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发和前端开发。
🦅主页:@逐梦苍穹
📕项目专栏:您的一键三连,是我创作的最大动力🌹

1、简介

Knife4j 是一款基于 Swagger 的开源 API 文档生成工具,它提供了一套简洁的界面来展示和测试你的 API。Knife4j 使得 API 文档的编写、查看和测试变得更加方便,同时支持在线调试接口。
以下是 Knife4j 的一些主要特性和优势:

  1. 基于 Swagger: Knife4j 是 Swagger 的一个增强版本,它利用 Swagger 注解来生成 API 文档,能够自动生成接口文档、测试接口等信息。
  2. 美观的界面: Knife4j 提供了一个直观、美观的界面,使得 API 文档更易于阅读和理解。它支持显示接口的请求和响应参数、响应示例、参数类型等详细信息。
  3. 在线调试: Knife4j 允许用户在界面中直接进行 API 接口的测试和调试,无需额外的工具。你可以在文档页面直接输入参数,模拟请求,并查看实时的响应。
  4. 接口分组: 可以将接口按照业务逻辑或其他标准进行分组,使得文档更具有组织性和可读性。
  5. 代码生成: Knife4j 支持通过在线界面生成前端调用 API 的代码片段,包括 Java、Spring Cloud Feign、JavaScript 等。
  6. 易于集成: Knife4j 提供了简单的集成方式,支持 Spring Boot 项目,只需要引入相应的依赖即可。
  7. 自定义配置: Knife4j 提供了一系列的配置选项,可以根据项目的需求进行自定义配置,以满足不同场景的需求。

总体而言,Knife4j 是一个强大、易用的 API 文档生成工具,适用于 Java 和 Spring Boot 项目,使得 API 的设计、测试和文档生成更加便捷。

2、生成文档

在springboot工程中,生成后端接口文档是非常重要的。
首先是引入依赖:

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>${knife4j}</version>
</dependency>

如果springboot启动的时候显示:
应用程序上下文对象异常-启动bean“documentationPluginsBootstrapper”失败,则导入:

<dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.0.18.Final</version>
</dependency>

或在父工程的pom.xml文件中添加:

<parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.3</version>
</parent>

最后,启动springboot工程,访问http://localhost:8080/doc.html即可

3、系列注解

3.1、@Api

@Api用于类,表示标识这个类是swagger的资源
该注解声明在controller类上,最常用的参数是tags:
image.png
tags的内容,就是生成的html文档的标题内容:
image.png
@Api注解的参数如下:

属性名数据类型描述
valueString字段说明
tagsString[]标签说明
descriptionString详细描述
basePathString基本路径可以不配置

3.2、@ApiResponses和@ApiResponse

@ApiResponses:在Rest 接口上使用,用作返回值的描述
image.png
@ApiResponse各参数:

属性名称数据类型说明
codeString响应的HTTP状态码
messageString响应的消息内容
responseClass<?>用于指定响应体的数据结构,
这个属性可以是实体类的 schema 定义

使用二者:
image.png
效果:
image.png

3.3、@ApiOperation

@ApiOperation:用在方法上,说明方法的作用,每一个url资源的定义
image.png
效果:
image.png

3.4、@Pathyvariable⭐

@Pathyvariable是获取get方式,url后面参数,进行参数绑定(单个参数或两个以内参数使用)
image.png
image.png
image.png

3.5、@RequestBody

@RequestBody:在当前对象获取整个http请求的body里面的所有数据(两个以上参数封装成对象使用)

3.6、@ApiOperationSupport

添加在Api中处理请求的方法上,通过此注解的order属性(int),可以指定排序序号,Knife4j会根据这些数字将各业务/请求资源升序排列,例如:@ApiOperationSupport(order = 1)。
image.png
如果出现自定义顺序失灵的情况,原因如下:
image.png
image.png

3.7、@ApiImplicitParams 和 @ApiImplicitParam

这两个注解是对请求参数的说明:
image.png
效果:
image.png

3.8、@ApiModel

用来对实体类进行说明,例如:**@ApiModel(value = "测试对象的value")**
image.png

3.9、@ApiModelProperty

作用在实体类的参数上,如果处理请求时,参数是封装的POJO类型,需要对各请求参数进行说明时,应该在此POJO类型的各属性上使用此注解,通过此注解的value属性配置请求参数的名称,通过requeired属性配置是否必须提交此请求参数(并不具备检查功能)
image.png

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

202412读书笔记|《做自己的花》——走自己的路,成为自己的星星

202412读书笔记|《做自己的花》——走自己的路&#xff0c;成为自己的星星 《做自己的花&#xff08;微信读书联合出品&#xff09;》作者月芽&#xff0c;一个用画画和诗讲故事的插画师、诗人。 画风治愈&#xff0c;故事感强&#xff0c;擅长在童话般的故事中描绘现实温暖的心…

MySQL 覆盖索引

目录 一、什么是索引 二、索引的有哪些种类&#xff1f; 三、InnoDB的不同的索引组织结构是怎样的呢&#xff1f; 四、什么是覆盖索引 五、如何使用是覆盖索引&#xff1f; 六、如何确定数据库成功使用了覆盖索引呢 总结&#xff1a; 一、什么是索引 索引&#xff08;在 …

C++ Qt开发:运用QJSON模块解析数据

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QJson组件的实现对JSON文本的灵活解析…

Vulnhub靶机:Pwn the Tron

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;Pwn the Tron&#xff08;10.0.2.40&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/…

【如何轻松拿捏LIO-SAM?】今天终于来啦!!

中科院保研硕士教你如何轻松拿捏LIO-SAM&#xff0c;不仅会对LIO-SAM的论文原理和代码进行详细讲解&#xff0c;也会对SLAM中的数学知识、LOAM、LeGO-LOAM的论文原理及代码进行详细讲解&#xff0c;2024年1月28日开始更新啦&#xff01;之后每周日晚20:00更新一章&#xff0c;欢…

Windows Server 2003 Web服务器搭建

系列文章目录 目录 系列文章目录 前言 一、Web服务器是什么&#xff1f; 二、配置服务器 1.实验环境搭建 2.服务器搭建 1)控制面板中找到增加或删除程序打开 2)点击增加程序 3)安装Web服务器 4)查看安装是否成功 5)打开Internet信息服务(IIS)管理器,进行配置 6)找…

Codeforces Round 785 C. Palindrome Basis

C. Palindrome Basis 题意 定义一个正整数 a a a 是回文的&#xff08;没有前导 0 0 0&#xff09;当且仅当&#xff1a; a a a 的十进制表示形式回文 给定一个正整数 n n n &#xff0c;求出将 n n n 拆分成若干个回文数之和的方案数 思路 这是一个经典模型&#xff0…

简单、在线、实时的多目标跟踪实现(C++)

文章目录 依赖建立镜像运行demo下载数据创建简单的数据链接在镜像中编译和运行代码代码依赖 Ubuntu 16.04Docker 18.09.4OpenCV 3.4.2Boost 1.58.0建立镜像 cd /path/to/sort-cpp docker build -t sort . ./docker_run.sh运行demo

路由进阶

文章目录 1.路由的封装抽离2.声明式导航 - 导航链接3.声明式导航-两个类名自定义匹配的类名 4.声明式导航 - 跳转传参查询参数传参动态路传参两种传参方式的区别动态路由参数可选符 5.Vue路由 - 重定向6.Vue路由 - 4047.Vue路由 - 模式设置8.编程式导航 - 两种路由跳转9.编程式…

Node.js-express

1.了解Ajax 1.1 什么是ajax Ajax的全称是Asynchronous Javascript And XML&#xff08;异步Js和XML&#xff09;. 通俗的理解&#xff1a;在网页中利用XMLHttpRequest对象和服务器进行数据交互的方式&#xff0c;就是Ajax 1.2 为什么要学习Ajax 之前所学的技术&#xff0c…

Go语言基础之单元测试

1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的&#xff0c;并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内&#xff0c;所有以_test.go为后缀名的源代码文件都是go …

Linux部署幻兽帕鲁服务器,PalWorld开服联机教程,保姆级教程

Linux系统搭建幻兽帕鲁服务器&#xff0c;PalWorld开服联机教程&#xff0c;保姆级教程 最近这游戏挺火&#xff0c;很多人想跟朋友联机&#xff0c;如果有专用服务器&#xff0c;就不需要房主一直开着电脑&#xff0c;稳定性也好得多。 幻兽帕鲁简介 《幻兽帕鲁》是一款游戏…