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

SpringBoot3使用Swagger3

SpringBoot3使用Swagger3

  • 项目中的后端接口进行简单的前端展示
  • 一、依赖引入
  • 二、快速启动
    • 1.在application.yml中配置
    • 2.或者properties文件,则配置
    • 3.启动项目访问swagger
  • 三、使用注解标注接口
    • Swagger配置文件
    • Swagger 注解迁移
    • 举例五种常用
      • @Api
      • @ApiOperation
      • @ApiImplicitParam
      • @ApiModel
      • @ApiModelProperty
    • 使用示例


项目中的后端接口进行简单的前端展示

Swagger是一个用于设计、构建、文档化和使用RESTful Web服务的开源工具。Swagger3是Swagger的最新版本,它提供了许多新功能和改进。

Swagger在SpringBoot3中的引入方法发生了改变,网上大部分还是SpringBoot2的版本

springboot版本3.2.4

一、依赖引入

用maven构建一个SpringBoot3的项目,在依赖中引入,在pom.xml中添加

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.0.4</version>
</dependency>

版本也可以使用新版,Springdoc-OpenAPI网站链接

二、快速启动

1.在application.yml中配置

# swagger-ui custom path
springdoc:swagger-ui:path : /swagger-ui.html

2.或者properties文件,则配置

代码如下(示例):

# swagger-ui custom path
springdoc.swagger-ui.path=/swagger-ui.html

3.启动项目访问swagger

访问http://localhost:9090/swagger-ui/index.html#/
其中的9090 改成你项目后端使用的端口,注意不能省略后面的index.html


三、使用注解标注接口

Swagger配置文件

package com.sumo.ipd.config;import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class Swagger3Config {@Beanpublic OpenAPI springOpenAPI() {// 访问路径:http://localhost:9090/swagger-ui/index.htmlreturn new OpenAPI().info(new Info().title("SpringDoc API").description("SpringDoc Simple Application").version("0.0.1"));}
}

Swagger 注解迁移

Swagger2 和 Swagger3 使用的是完全不同的两套注解,所以原本使用 Swagger2 相关注解的代码页需要完全迁移,改为使用 Swagger3 的注解。

Swagger2Swagger3
@Api@Tag
@ApiOperation@Operation
@ApiImplicitParams@Parameters
@ApiImplicitParam@Parameter
@ApiModel@Schema
@ApiModelProperty@Schema
@ApiResponses@ApiResponses
@ApiResponse@ApiResponse
@ApiIgnore@Hidden 或者 其他注解的 hidden = true 属性

举例五种常用

@Api

Swagger2 代码

@Api(value = "用户接口", tags = "UserController")

Swagger3 代码

@Tag(name = "UserController", description = "用户接口")

@ApiOperation

Swagger2 代码

@ApiOperation(value = "查询用户数据")

Swagger3 代码

@Operation(description = "查询用户数据")

@ApiImplicitParam

Swagger2 代码

@ApiImplicitParams({@ApiImplicitParam(name = "currentPage", value = "当前页码", dataTypeClass = Integer.class, required = true),@ApiImplicitParam(name = "size", value = "当前页大小", defaultValue = "10", dataTypeClass = Integer.class),@ApiImplicitParam(name = "queryUser", value = "用户查询条件", dataTypeClass = User.class)
})

Swagger3 代码

@Parameters({@Parameter(name = "currentPage", description = "当前页码", required = true),@Parameter(name = "size", description = "当前页大小", example = "10"),@Parameter(name = "queryUser", description = "用户查询条件")
})

@ApiModel

Swagger2 代码

@ApiModel(value = "用户信息实体类")

Swagger3 代码

@Schema(name = "用户信息实体类")

@ApiModelProperty

Swagger2 代码

@ApiModelProperty(value = "用户名称")

Swagger3 代码

@Schema(name = "用户名称")

使用示例

package com.sumo.ipd.controller;import com.sumo.ipd.annotation.BusLog;
import com.sumo.ipd.entity.Department;
import com.sumo.ipd.entity.User;
import com.sumo.ipd.enums.Sex;
import com.sumo.ipd.enums.UserStatus;
import com.sumo.ipd.service.DepartmentService;
import com.sumo.ipd.service.UserService;
import com.sumo.ipd.utils.ExcelUtil;
import com.sumo.ipd.utils.PwdUtil;
import com.sumo.ipd.vo.LoginToken;
import com.sumo.ipd.vo.R;import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.util.*;@RestController
@RequestMapping("user")
@CrossOrigin
@Tag(name = "UserController", description = "用户接口")
public class UserController {@ResourceUserService userService;@ResourceDepartmentService departmentService;/*** 用户注册** @param registerUser* @return*/@Operation(description = "用户注册")@PostMapping("register")public R register(@RequestBody User registerUser) {if (userService.query().eq(User.COL_CERTIFICATENO, registerUser.getCertificateNo()).count() > 0) {return R.builder().code(0).message("用户已存在!").build();} else {userService.save(registerUser);return R.builder().code(200).message("注册成功!请等待组织管理员审核...").build();}}
}
http://www.lryc.cn/news/378311.html

相关文章:

  • 【51单片机基础教程】点亮led
  • Docker之overlay2的迁移
  • CentOS中的rename命令
  • redis.conf 参数详解,方便进行性能优化配置
  • 微信小程序登录流程详情及Java代码
  • c++qt合并两张灰度图像
  • Uniapp通过年月日时间转变星期格式
  • 如何编写和执行高效的测试计划
  • 【MySQL连接器(Python)指南】03-MySQL连接器(Python)安装
  • Spring Boot组件化与参数校验
  • 实现可扩展的电商返利平台:技术选型与挑战
  • 从0开始C++(三):构造函数与析构函数详解
  • 行车记录仪文件夹“0字节”现象解析与恢复策略
  • 呼叫中心系统的功能都有哪些?okcc呼叫中心pscc磐石云呼叫系统部署
  • 2024.06.08校招 实习 内推 面经
  • Polyplus——转染试剂专业供应商
  • 微服务架构-线上治理、线下治理与架构演进
  • 网络安全:什么是SQL注入
  • 从零开始精通Onvif之网络配置
  • 在 macOS 上使用 Homebrew 安装和配置 Python 及 Tk 库
  • 【机器学习 复习】第2章 线性回归及最大熵模型
  • 关于椭圆的方程(有Python画的动图)
  • selenium常见难点解决方案
  • 【Python高级编程】 综合练习-使用OpenCV 进行视频数据处理
  • rs232和can的区别
  • 嵌入式软件stm32面试
  • 【Git】-- 添加公钥到 github 或者gitlab上
  • Vue页面生成PDF后调起浏览器打印
  • 纯前端实现导出excel
  • QT windows 5.12.0 安装包