• swagger在线API文档配置


    package com.sjaco.lccloud.provider.olsim.config;
    
    import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
    import com.google.common.collect.Lists;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.*;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spi.service.contexts.SecurityContext;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
    
    import java.time.LocalDateTime;
    import java.util.List;
    
    import static cn.hutool.core.collection.CollUtil.newArrayList;
    
    /**
     * swagger在线API文档配置
     */
    @Configuration
    @EnableSwagger2WebMvc
    public class SwaggerConfig {
    
        /*引入Knife4j提供的扩展类*/
        private final OpenApiExtensionResolver openApiExtensionResolver;
    
        @Autowired
        public SwaggerConfig(OpenApiExtensionResolver openApiExtensionResolver) {
            this.openApiExtensionResolver = openApiExtensionResolver;
        }
    
        private List<ApiKey> securitySchemes() {
            return newArrayList(
                    new ApiKey("JWT", "Authorization", "header"));
        }
    
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title("lc").description("©2020 Copyright. Powered By sjaco")
                    .version("1.0").contact(new Contact("孙爽", "", "xiaoshitou1s@qq.com"))
                    .build();
        }
    
    //    private ApiInfo apiInfo(String title,String desc, String version) {
    //        return new ApiInfoBuilder().title(title).description(desc)
    //                .version(version).contact(contact).build();
    //    }
    
    
        @Bean(value = "faceIdApi")
        public Docket faceIdApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .directModelSubstitute(LocalDateTime.class,String.class)
                    .apiInfo(apiInfo())
                    .groupName("lc:人脸识别接口")
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.ant("/api/trilateral/faceid/**")
    //                        .or(PathSelectors.ant("/api/customersss/**"))
                    )
                    .build()
                    .extensions(openApiExtensionResolver.buildExtensions("lc:人脸识别接口"))
                    .securityContexts(Lists.newArrayList(securityContext(),securityContext1()))
                    .securitySchemes(securitySchemes());
        }
    
        @Bean(value = "appApi")
        public Docket appApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .directModelSubstitute(LocalDateTime.class,String.class)
                    .apiInfo(apiInfo())
                    .groupName("lc:App接口")
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.ant("/imapi/im/**")
    //                        .or(PathSelectors.ant("/api/customersss/**"))
                    )
                    .build()
                    .extensions(openApiExtensionResolver.buildExtensions("lc:App接口"))
                    .securityContexts(Lists.newArrayList(securityContext(),securityContext1()))
                    .securitySchemes(securitySchemes());
        }
    
        @Bean(value = "appVendorApi")
        public Docket appVendorApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .directModelSubstitute(LocalDateTime.class,String.class)
                    .apiInfo(apiInfo())
                    .groupName("lc:App接口(商家)")
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.ant("/api/appVendor/**")
    //                        .or(PathSelectors.ant("/api/customersss/**"))
                    )
                    .build()
                    .extensions(openApiExtensionResolver.buildExtensions("lc:App接口(商家)"))
                    .securityContexts(Lists.newArrayList(securityContext(),securityContext1()))
                    .securitySchemes(securitySchemes());
        }
    
        @Bean(value = "authApi")
        public Docket authApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .directModelSubstitute(LocalDateTime.class,String.class)
                    .apiInfo(apiInfo())
                    .groupName("lc:授权和基础信息接口")
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.ant("/api/sys/**")
                            .or(PathSelectors.ant("/api/region/**"))
                            .or(PathSelectors.ant("/api/oss/**"))
                            .or(PathSelectors.ant("/api/test/**"))
                    )
                    .build()
                    .extensions(openApiExtensionResolver.buildExtensions("lc:授权和基础信息接口"))
                    .securityContexts(Lists.newArrayList(securityContext(),securityContext1()))
                    .securitySchemes(securitySchemes());
        }
    
        @Bean(value = "logApi")
        public Docket logApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .directModelSubstitute(LocalDateTime.class,String.class)
                    .apiInfo(apiInfo())
                    .groupName("lc:日志服务接口")
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.ant("/log/**")
                    )
                    .build()
                    .extensions(openApiExtensionResolver.buildExtensions("lc:日志服务接口"))
                    .securityContexts(Lists.newArrayList(securityContext(),securityContext1()))
                    .securitySchemes(securitySchemes());
        }
    
    
    
        private SecurityContext securityContext() {
            return SecurityContext.builder()
                    .securityReferences(defaultAuth())
    //                .forPaths(PathSelectors.regex("/.*"))
                    .forPaths(PathSelectors.regex("^((?!auth).)*$"))  //包含 auth的接口不要求 token
                    .build();
        }
        private SecurityContext securityContext1() {
            return SecurityContext.builder()
                    .securityReferences(defaultAuth1())
    //                .forPaths(PathSelectors.regex("/.*"))
                    .forPaths(PathSelectors.regex("^((?!auth).)*$"))
                    .build();
        }
    
        List<SecurityReference> defaultAuth() {
            AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
            AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
            authorizationScopes[0] = authorizationScope;
            return Lists.newArrayList(new SecurityReference("JWT", authorizationScopes));
        }
        List<SecurityReference> defaultAuth1() {
            AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
            AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
            authorizationScopes[0] = authorizationScope;
            return Lists.newArrayList(new SecurityReference("JWT", authorizationScopes));
        }
    
    }
  • 相关阅读:
    css修改element-ui滚动条样式
    执行java 报错 _System.out.printIn : 找不到符号
    java -version失效的解决方法
    vue cli4配置多个baseUrl环境,axios涉及多个请求域的情况
    vue cli4配置多个跨域_正则重复
    axios中vue 发送postman中raw_json格式的请求
    开发常用快捷键
    js字符串时间转化为时间戳
    vue项目vue-cli4展示本地markdown语法_md文件,图文详细讲解
    vue响应式原理源码:带你一步精通vue
  • 原文地址:https://www.cnblogs.com/stromgao/p/15879166.html
Copyright © 2020-2023  润新知