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

springboot引入swagger2

1,pom文件里引入swagger-ui依赖

    <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

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

2,在config里添加swagger基础配置

public abstract class BaseSwaggerConfig {

    @Bean
    public Docket createRestApi() {
        SwaggerProperties swaggerProperties = swaggerProperties();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo(swaggerProperties))
                .directModelSubstitute(Byte.class, Integer.class)
                .select()
                .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getApiBasePackage()))
                .paths(PathSelectors.any())
                .build();
        if (swaggerProperties.isEnableSecurity()) {
            docket.securitySchemes(securitySchemes()).securityContexts(securityContexts());
        }
        return docket;
    }

    private ApiInfo apiInfo(SwaggerProperties swaggerProperties) {
        return new ApiInfoBuilder()
                .title(swaggerProperties.getTitle())
                .description(swaggerProperties.getDescription())
                .contact(new Contact(swaggerProperties.getContactName(), swaggerProperties.getContactUrl(), swaggerProperties.getContactEmail()))
                .version(swaggerProperties.getVersion())
                .build();
    }

    private List<ApiKey> securitySchemes() {
        //设置请求头信息
        List<ApiKey> result = new ArrayList<>();
        ApiKey apiKey = new ApiKey("Authorization", "Authorization", "header");
        result.add(apiKey);
        return result;
    }

    private List<SecurityContext> securityContexts() {
        //设置需要登录认证的路径
        List<SecurityContext> result = new ArrayList<>();
        result.add(getContextByPath("/*/.*"));
        return result;
    }

    private SecurityContext getContextByPath(String pathRegex) {
        return SecurityContext.builder()
                .securityReferences(defaultAuth())
                .forPaths(PathSelectors.regex(pathRegex))
                .build();
    }

    private List<SecurityReference> defaultAuth() {
        List<SecurityReference> result = new ArrayList<>();
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        result.add(new SecurityReference("Authorization", authorizationScopes));
        return result;
    }

    /**
     * 自定义Swagger配置
     */
    public abstract SwaggerProperties swaggerProperties();
}

3,config里添加swagger自定义配置

@Data
@EqualsAndHashCode(callSuper = false)
@Builder
public class SwaggerProperties {
    /**
     * API文档生成基础路径
     */
    private String apiBasePackage;
    /**
     * 是否要启用登录认证
     */
    private boolean enableSecurity;
    /**
     * 文档标题
     */
    private String title;
    /**
     * 文档描述
     */
    private String description;
    /**
     * 文档版本
     */
    private String version;
    /**
     * 文档联系人姓名
     */
    private String contactName;
    /**
     * 文档联系人网址
     */
    private String contactUrl;
    /**
     * 文档联系人邮箱
     */
    private String contactEmail;
}

4,API文档相关配置

@Configuration
@EnableSwagger2
public class SwaggerConfig extends BaseSwaggerConfig{

    @Override
    public SwaggerProperties swaggerProperties() {
        return SwaggerProperties.builder()
                .apiBasePackage("com.linz.app")
                .title("Maven测试")
                .description("Maven测试相关接口文档")
                .contactName("test")
                .version("1.0")
                .enableSecurity(true)
                .build();
    }
}

http://www.kler.cn/a/160339.html

相关文章:

  • 如何用C#和Aspose.PDF实现PDF转Word工具
  • MyBatisPlus 用法详解
  • L10.【LeetCode笔记】回文链表
  • scrapy爬取中信证券销售金融产品信息
  • 【Vue】Vue3.0(二十一)Vue 3.0中 的$event使用示例
  • vxe-table 3.10+ 进阶高级用法(一),根据业务需求自定义实现筛选功能
  • 10-tornado项目部署
  • 18、XSS——cookie安全
  • RPG项目01_脚本代码
  • Apache Ofbiz XML-RPC RCE漏洞复现(CVE-2023-49070)
  • 识别低效io引起的free buffer waits
  • 日志框架梳理(Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2)
  • wsl2 ubuntu下配置go执行make init 错误 /bin/bash line 1 go command not found
  • DevOps搭建(三)-Docker环境安装细步骤
  • 多个项目复用node_modules
  • mac电池最大充电限制工具 AlDente Pro中文 for Mac
  • 深入理解Sentinel系列-1.初识Sentinel
  • 【WPF】扫描的方式发现局域网中的Android设备
  • 利用阿里云 DDoS、WAF、CDN 和云防火墙为在线业务赋能
  • 笔记67:Transformer
  • springboot 接口文档
  • 【基于openGauss5.0.0简单使用DBMind】
  • AWS Remote Control ( Wi-Fi ) on i.MX RT1060 EVK - 2 “架构 AWS”
  • 会声会影2024软件还包含了视频教学以及模板素材
  • Linux 导入、导出 MySQL 数据库命令
  • AIGC之Image2Video(一)| Animate Anyone:从静态图像生成动态视频,可将任意图像角色动画化