当前位置: 首页 > news >正文

SpringBoot整合Swagger UI 用于提供接口可视化界面

目录

一、引入相关依赖

二、添加配置文件

三、测试

四、Swagger 相关注解


一、引入相关依赖

  1. 图像化依赖
    Swagger UI 用于提供可视化界面:

    <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
    </dependency>
    
  2. Swagger2依赖
    Swagger2 用于生成和展示接口文档:

    <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
    </dependency>
    

    注意: 使用 Spring Boot 时,确保版本合适,否则可能无法成功导入。推荐的 Spring Boot 版本通常为 2.3.x2.4.x


二、添加配置文件

  1. Swagger 配置类:

    在 Spring Boot 项目中,创建一个 Swagger 配置类来启用 Swagger 功能并进行相关配置。

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig implements WebMvcConfigurer {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2)// 添加 API 详情信息.apiInfo(apiInfo()).select()// 只显示有 @ApiOperation 注解的接口.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))// 设置展示的路径.paths(PathSelectors.any()).build()// 是否开启 Swagger.enable(true);}/*** 设置 API 信息* @return ApiInfo*/private ApiInfo apiInfo() {return new ApiInfoBuilder().title("API文档") // 文档标题.description("接口文档详情信息") // 文档描述.version("1.0") // 版本.contact(new Contact("", "", "")) // 联系方式.license("") // 许可.licenseUrl("") // 许可链接.build();}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");WebMvcConfigurer.super.addResourceHandlers(registry);}
    }
    
  2. 说明:

    • @EnableSwagger2:启用 Swagger2 支持。
    • Docket:用于配置 Swagger。
    • @ApiOperation:控制哪些方法会被生成文档。
    • @Api:控制哪个类会被生成文档。
    • @ApiInfo:文档的元数据配置,如标题、描述、版本等。

三、测试

  • 接口文档的访问地址:
    访问 Swagger UI 页面,可以查看和测试接口。默认路径为:

  • http://localhost:8080/swagger-ui.html

    http://localhost:8080/swagger-ui.html
    

四、Swagger 相关注解

  1. @Api
    用于标注控制器类,描述整个类的功能。

    @Api(tags = {"用户信息接口"})
    public class UserController {// 类中的方法
    }
    
  2. @ApiOperation
    用于标注方法,描述该接口的功能。

  3. @ApiOperation(value = "查询所有用户信息")
    @GetMapping("/users")
    public List<User> getAllUsers() {// 查询所有用户信息
    }
    

    注: @Api@ApiOperation 需要同时使用。

  4. @ApiImplicitParams
    用于标注方法的参数信息,通常配合 @ApiImplicitParam 使用。

    @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "Long", paramType = "query")
    })
    @GetMapping("/user")
    public User getUserById(@RequestParam Long userId) {// 查询用户信息
    }
    
  5. @ApiModel
    用于描述模型类的元数据。当用户的入参是实体类时,使用该注解描述实体类的结构。

    @ApiModel("用户类实体信息")
    public class User {@ApiModelProperty(value = "用户ID", required = true)private Long userId;@ApiModelProperty(value = "用户名")private String userName;// 省略其他字段和方法
    }
    

通过以上步骤配置和注解,您就可以在 Spring Boot 项目中使用 Swagger 生成接口文档并通过 Swagger UI 进行展示和交互了。这对于开发、调试和文档管理都非常有帮助。

相关文章:

SpringBoot整合Swagger UI 用于提供接口可视化界面

目录 一、引入相关依赖 二、添加配置文件 三、测试 四、Swagger 相关注解 一、引入相关依赖 图像化依赖 Swagger UI 用于提供可视化界面&#xff1a; <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactI…...

如何实现滑动开关功能

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了PageView这个Widget,本章回中将介绍Switch Widget.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的Switch是指左右滑动的开关&#xff0c;常用来表示某项设置是打开还是关闭。Fl…...

数仓的数据加工过程-ETL

ETL代表Extract Transform和Load。ETL将所有三个数据库功能组合到一个工具中&#xff0c;以从一个数据库获取数据并将其放入另一个数据库。 提取&#xff1a;提取是从数据库中提取(读取)信息的过程。在此阶段&#xff0c;从多个或不同类型的来源收集数据。 转换&#xff1a;转…...

自动驾驶中的多传感器时间同步

目录 前言 1.多传感器时间特点 2.统一时钟源 2.1 时钟源 2.2 PPSGPRMC 2.3 PTP 2.4 全域架构时间同步方案 3.时间戳误差 3.1 硬件同步 3.2 软件同步 3.2.3 其他方式 ① ROS 中的 message_filters 包 ② 双端队列 std::deque 参考&#xff1a; 前言 对多传感器数据…...

CYT3BB_4BB:Clock system

CYT3BB/4BB的时钟系统包括8-MHz IMO、2个ILO、4个看门狗计时器、4个PLL、一个FLL、5个时钟监控器(CSV)、一个8-33.34MHzECO和一个32.768-kHz WCO。   该时钟系统支持三个主时钟域: CLK_HF、CLK_SLOW和CLK_LF。 - CLK_HFx: CLK_HFx是活动模式的时钟。每个人都可以使用任…...

C# OpenCV机器视觉:利用CNN实现快速模板匹配

在一个阳光灿烂的周末&#xff0c;阿强正瘫在沙发上&#xff0c;百无聊赖地换着电视频道。突然&#xff0c;一则新闻吸引了他的注意&#xff1a;某博物馆里一幅珍贵的古画离奇失踪&#xff0c;警方怀疑是被一伙狡猾的盗贼偷走了&#xff0c;现场只留下一些模糊不清的监控画面&a…...

消息队列篇--通信协议扩展篇--二进制编码(ASCII,UTF-8,UTF-16,Unicode等)

1、ASCII&#xff08;American Standard Code for Information Interchange&#xff09; 范围&#xff1a;0 到 127&#xff08;共 128 个字符&#xff09;描述&#xff1a;ASCII 是一种早期的字符编码标准&#xff0c;主要用于表示英文字母、数字和一些常见的符号。每个字符占…...

Direct Preference Optimization (DPO): 一种无需强化学习的语言模型偏好优化方法

论文地址&#xff1a;https://arxiv.org/pdf/2305.18290 1. 背景与挑战 近年来&#xff0c;大规模无监督语言模型&#xff08;LM&#xff09;在知识获取和推理能力方面取得了显著进展&#xff0c;但如何精确控制其行为仍是一个难题。 现有的方法通常通过**强化学习从人类反馈&…...

跟我学C++中级篇——容器的连接

一、数据的整合 在实际的开发场景中&#xff0c;经常可以遇到以下的情况&#xff1a;有几个地方的数据需要整合在一起。解决办法也有很多&#xff0c;在不同的层面有不同的解决方式。比如经过清洗可以把非关系型数据转为关系型数据。但在底层编程的情况中会发现有几情况&#…...

java求职学习day15

多线程 1 基本概念 1.1 程序和进程的概念 &#xff08;1&#xff09;程序 - 数据结构 算法&#xff0c;主要指存放在硬盘上的可执行文件。 &#xff08;2&#xff09;进程 - 主要指运行在内存中的可执行文件。 &#xff08;3&#xff09;目前主流的操作系统都支持多进程&a…...

【脚本】如何禁用谷歌浏览器自动更新

这里写自定义目录标题 问题描述解决方法代码 问题描述 最近更新系统以后&#xff0c;发现chrome老是自己更新&#xff0c;导致我的代码也得跟着他更新&#xff0c;就跟一个拜托不掉的狗皮膏药一样。 解决方法 于是我写了一个脚本&#xff0c;以下代码都是bash代码&#xff0…...

【Linux】华为服务器使用U盘安装统信操作系统

目录 一、准备工作 1.1 下载UOS官方系统 &#xff11;.&#xff12;制作启动U盘 1.3 服务器智能管理系统iBMC 二、iBMC设置U盘启动 一、准备工作 1.1 下载UOS官方系统 服务器CPU的架构是x86-64还是aarch64&#xff09;,地址&#xff1a;统信UOS生态社区 - 打造操作系统创…...

WPF3-在xaml中引用其他程序集的名称空间

1. 如何在XAML里引用类库中的名称空间和类2. 小结 1. 如何在XAML里引用类库中的名称空间和类 首先需要记住一点&#xff1a;把类库引用到项目中是引用其中名称空间的物理基础&#xff0c;无论是C#还是XAML都是这样。 一旦将一个类库引用进程序&#xff0c;就可以引用其中的名…...

Python 在Word中添加、或删除超链接

在Word文档中&#xff0c;超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超链接&#xff0c;用户可以轻松地导航到相关信息&#xff0c;从而增强文档的互动性和可读性。本文将介绍如何使用Python在Word中添加超链接、或删除Word文档中的超…...

基于 WPF 平台使用纯 C# 实现动态处理 json 字符串

一、引言 在当今的软件开发领域&#xff0c;数据的交换与存储变得愈发频繁&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;作为一种轻量级的数据交换格式&#xff0c;以其简洁、易读、便于解析和生成的特点&#xff0c;被广泛应用于各种应用程序中。在 W…...

「全网最细 + 实战源码案例」设计模式——单例设计模式

核心思想&#xff1a; 属于创建型设计模式&#xff0c;核心目的是确保一个类在整个程序运行期间只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。 控制共享资源的访问&#xff08;如数据库链接、配置管理、日志处理器等&#xff09; 真实世界类比&#xff1a;政府…...

第01章 19 通过点数据逐级构建球体体数据的综合性小例子

用VTK库来创建一个三维图像数据&#xff08;vtkImageData&#xff09;&#xff0c;并填充标量数据以表示一个球体的体数据。球的半径为50&#xff0c;体数据的空间间隔为1.0/1000。 首先&#xff0c;我需要包含VTK的头文件&#xff0c;并且创建一个vtkImageData对象。然后&…...

CVE-2024-23897-Jenkins任意文件读取漏洞复现

content Jenkins是什么CVE-2024-23897总结修复建议 Jenkins是什么 Jenkins是一人基于Java开发的、可扩展的持续集成引擎&#xff0c;用于持续、自动地构建/测试软件项目&#xff0c;可以监控一些定时执行的任务。 官网文档&#xff1a; Jenkins是一款开源 CI&CD 软件&…...

前端react后端java实现提交antd form表单成功即导出压缩包

前端&#xff08;React Ant Design&#xff09; 1. 创建表单&#xff1a;使用<Form>组件来创建你的表单。 2. 处理表单提交&#xff1a;在onFinish回调中发起请求到后端API&#xff0c;并处理响应。 import React from react; import { Form, Input, Button } from ant…...

基于ESP32的桌面小屏幕实战[6]:环境搭建和软件基础

摘要 本文分为两部分&#xff1a;Linux开发环境搭建和软件基础。Linux开发环境搭建介绍了Ubuntu虚拟机安装及SSH、Samba配置&#xff0c;可以实现用VSCode操作虚拟机。为了后续工作&#xff0c;搭建了乐鑫ESP32 SDK环境。软件基础介绍了Linux开发常用的软件基础&#xff0c;包…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...