SpringBoot3使用Swagger3


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

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 {
    @Bean
    public OpenAPI springOpenAPI() {
        // 访问路径:http://localhost:9090/swagger-ui/index.html
        return 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 {
    @Resource
    UserService userService;
    @Resource
    DepartmentService 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();
        }
    }
}
SpringBoot 3集成Swagger 3的步骤如下: 1. 首先,需要在项目的pom.xml文件中添加SpringFox的依赖项。可以使用以下代码片段添加依赖项: ``` <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> ``` 这将帮助将Swagger 3集成到Spring中。 2. 在控制器类上添加@Api注解,用于定义Swagger页面的信息。例如: ``` @RestController @RequestMapping("/user") @Api(tags = "人员信息查询接口") public class UserController { // ... } ``` 这将在Swagger页面上显示"人员信息查询接口"标签。 3. 在需要生成API文档的方法上添加@ApiOperation注解,用于定义方法的说明。例如: ``` @GetMapping("/queryPage") @ApiOperation(value = "人员信息分页查询方法", notes = "查看人员信息是否返回成功") public Result queryPage(Integer pageNumber, Integer pageSize, String name) { // ... } ``` 这将在Swagger页面上显示"人员信息分页查询方法"的说明。 4. 最后,根据需要进行其他配置。例如,如果需要修改SpringBoot的路径匹配模式,可以在application.yml文件中进行配置。例如: ``` spring: mvc: pathmatch: matching-strategy: ANT_PATH_MATCHER ``` 这将使用AntPathMatcher作为路径匹配策略。 综上所述,以上是SpringBoot 3集成Swagger 3的基本步骤和配置。通过这些步骤,您可以在SpringBoot项目中使用Swagger来生成API文档。 #### 引用[.reference_title] - *1* *3* [SpringBoot整合Swagger3.0](https://blog.csdn.net/weixin_43709291/article/details/127192273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Springboot项目集成Swagger3.0](https://blog.csdn.net/weixin_44924882/article/details/127940544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值