SpringBoot3.0集成SpringDoc

SpringBoot3.0集成SpringDoc

这里为什么要使用SpringDoc呢?是因为集成SpringFox只支持SpringBoot2.x,
而基于Swagger的SpringDoc的社区现在十分活跃,代码也在不断更新。
SpringFox自从2020年7月14号之后就不更新了。

YiYi项目学习教程

1. pom配置


    org.springdoc
    springdoc-openapi-starter-webmvc-ui
    2.0.2

2. OpenApi配置类

这里和Swagger配置类似,主要是配置接口的标题、描述、版本信息、Authorizations权限等。
下面两个分组信息也可以根据项目自身进行配置即可。

import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityScheme;

/**
 * SpringDoc 配置类
 *
 * @author Jack魏
 * @since 2023/1/8 16:51
 */
@Configuration
public class OpenApiConfig {
    /**
     * SpringDoc 标题、描述、版本等信息配置
     *
     * @return openApi 配置信息
     */
    @Bean
    public OpenAPI springDocOpenAPI() {
        return new OpenAPI().info(new Info()
                        .title("YiYi API")
                        .description("YiYi接口文档说明")
                        .version("v0.0.1-SNAPSHOT")
                        .license(new License().name("YiYi项目博客专栏")
                                .url("https://blog.csdn.net/weihao0240/category_12166012.html")))
                .externalDocs(new ExternalDocumentation()
                        .description("码云项目地址")
                        .url("https://gitee.com/jack0240/YiYi"))
                // 配置Authorizations
                .components(new Components().addSecuritySchemes("bearer-key",
                        new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer")));
    }

    /**
     * demo 分组
     *
     * @return demo分组接口
     */
    @Bean
    public GroupedOpenApi siteApi() {
        return GroupedOpenApi.builder()
                .group("demo接口")
                .pathsToMatch("/demo/**")
                .build();
    }

    /**
     * sys 分组
     *
     * @return sys分组接口
     */
    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                .group("sys接口")
                .pathsToMatch("/sys/**")
                .build();
    }
}

3. 使用

可以看到注解的方式和Swagger基本上一模一样,就是名字有所变化而已。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.jack.yiyi.bean.SysUser;
import com.jack.yiyi.service.sys.SysUserService;
import com.jack.yiyi.util.Result;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;


/**
 * 系统用户Controller控制类
 *
 * @author Jack魏
 * @since 2022-11-12
 */
@Tag(name = "系统用户接口", description = "系统用户接口")
@RestController
@RequestMapping("/sys/user/")
public class SysUserController {
    @Autowired
    private SysUserService sysUserService;

    /**
     * 注册后台系统用户
     *
     * @param sysUser 前端注册信息
     * @return 注册用户信息
     */
    @Operation(summary = "注册接口", description = "输入用户信息进行注册")
    @Parameters({
            @Parameter(name = "account", description = "登录账号", required = true),
            @Parameter(name = "password", description = "密码", required = true)
    })
    @PostMapping("register")
    public Result register(SysUser sysUser) {
        // 登录名参数校验
        if (sysUser.getAccount() == null || "".equals(sysUser.getAccount())) {
            return Result.fail("注册用户名不能为空");
        }
        // 密码参数校验
        if (sysUser.getPassword() == null || "".equals(sysUser.getPassword())) {
            return Result.fail("密码不能为空");
        }

        SysUser user = sysUserService.register(sysUser);
        if (user == null) {
            return Result.fail("注册失败!请更换登录名!");
        }
        return Result.success("注册成功,欢迎您:" + sysUser.getAccount());
    }
}

通过上面的配置之后,启动项目即可,然后访问:
http://127.0.0.1:8181/yiyi/swagger-ui/index.html
因为此项目也配置了Security,所以先输入用户:user、密码:123456

登录


SpringDoc


接口调试


返回封装对象

4. SpringDoc注解与SpringFox对比

官网地址:https://springdoc.org/v2/#migrating-from-springfox

SpringFox

SpringDoc

作用

@Api

@Tag

在controller类上声明接口

@ApiIgnore

@Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden

接口隐藏

@ApiImplicitParam

@Parameter

单个参数说明

@ApiImplicitParams

@Parameters

多个参数说明

@ApiModel

@Schema

对实体类说明

@ApiModelProperty(hidden = true)

@Schema(accessMode = READ_ONLY)

字段隐藏

@ApiModelProperty

@Schema

实体类字段说明

@ApiOperation(value = “foo”, notes = “bar”)

@Operation(summary = “foo”, description = “bar”)

接口方法说明

@ApiParam

@Parameter

单个参数说明

@ApiResponse(code = 404, message = “foo”)

@ApiResponse(responseCode = “404”, description = “foo”)

返回说明

5. 演示项目

https://gitee.com/jack0240/YiYi

YiYi项目

展开阅读全文

页面更新:2024-03-31

标签:注解   字段   用户信息   接口   参数   密码   项目   用户   系统   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top