• swagger (九)


    创建创建microservicecloud-swagger

    pom文件

    <dependencies>
    <!-- SpringBoot整合eureka客户端 -->
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <!-- swagger-spring-boot -->
    <dependency>
    <groupId>com.spring4all</groupId>
    <artifactId>swagger-spring-boot-starter</artifactId>
    <version>1.7.0.RELEASE</version>
    </dependency>
    </dependencies>

     yml文件

    eureka:
      client: #客户端注册进eureka服务列表内
        service-url:
          defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
          ###是否向注册中心注册自己
        register-with-eureka: true
          ###是否需要从eureka上获取注册信息
        fetch-registry: true

     properties文件

    #swagger配置
    swagger.enabled=true
    swagger.title=Auth-Server-API
    swagger.description=Auth-Server接口说明
    swagger.basePackage=com.yehui.controller
    swagger.basePath=/**
    swagger.excludePath=/error
    swagger.version=1.0
    #接口管理员配置
    swagger.contact.name=yehui
    swagger.contact.url=xiaokun.wang@midea.com
    swagger.contact.email=xiaokun.wang@midea.com
    server.port=9003
    eureka.client.u

     扫描单包  swagger类

    @Configuration
    @EnableSwagger2 //swagger注解
    public class SwaggerConfig {
    
        @Autowired
        private Environment ev;
    
        //得到扫描包
        public String getBasePack(){
            String basePage = ev.getProperty("swagger.basePackage");
            return isEmpty(basePage)?"":basePage;
        }
    
        //得到标题
        public String getTitle(){
            String title = ev.getProperty("swagger.title");
            return isEmpty(title)?"":title;
        }
        //接口文档说明
        public String getDescription(){
            String description = ev.getProperty("swagger.description");
            return isEmpty(description)?"":description;
        }
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                    // api扫包
                    .apis(RequestHandlerSelectors.basePackage(getBasePack())).paths(PathSelectors.any()).build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title(getTitle()).description(getDescription())
                    .termsOfServiceUrl("http://www.itmayiedu.com")//官方网址
                     .contact(contact())
                    .version(getVersion()).build();
        }
        //获取版本号
        public String getVersion(){
            String version = ev.getProperty("swagger.version");
            return isEmpty(version)?"":version;
        }
        //接口管理员配置
        public Contact contact(){
            String name = ev.getProperty("swagger.contact.name");
            String url = ev.getProperty("swagger.contact.url");
            String email = ev.getProperty("swagger.contact.email");
            name = isEmpty(name)?"":name;
            url = isEmpty(url)?"":url;
            email = isEmpty(email)?"":email;
            return new Contact(name,url,email);
        }
        /**
         * 判断字符串是否为空,null或者length=0表示空值
         *
         * @param str
         * @return true-空字符串,false-非空字符串
         */
        public static boolean isEmpty(String str) {
            return str == null || str.length() == 0;
        }
    
    }

    支持多包的swagger类

    @Component
    @EnableSwagger2
    public class SwaggerConfig {
        @Autowired
        private Environment env;
    
        private String basePackage() { // controller接口所在的包
            String basePackage = env.getProperty("swagger.basePackage");
            return CommUtil.isEmpty(basePackage) ? "" : basePackage;
        }
    
        private String title() { // 当前文档的标题
            String title = env.getProperty("swagger.title");
            return CommUtil.isEmpty(title) ? "说明文档" : title;
        }
    
        private String description() { // 当前文档的详细描述
            String description = env.getProperty("swagger.description");
            return CommUtil.isEmpty(description) ? "接口说明文档" : description;
        }
    
        private String version() { // 当前文档的版本
            String version = env.getProperty("swagger.version");
            return CommUtil.isEmpty(version) ? "1.0" : version;
        }
    
        private Contact contact() { // 接口管理员配置
            String name = env.getProperty("swagger.contact.name");
            String url = env.getProperty("swagger.contact.url");
            String email = env.getProperty("swagger.contact.email");
    
            return new Contact(CommUtil.isEmpty(name) ? "admin" : name, CommUtil.isEmpty(url) ? "admin@midea.ciom" : url,
                    CommUtil.isEmpty(email) ? "admin@midea.ciom" : email);
        }
    
        @Bean
        public Docket newDocket() {
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                    .apis(input -> declaringClass(input).transform(handlerPackage(basePackage())).or(true))
                    .paths(PathSelectors.any()).build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder().title(title()).description(description()).version(version()).contact(contact())
                    .build();
        }
    
        private Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
            return input -> {
                // 循环判断匹配
                for (String strPackage : basePackage.split(",")) {
                    boolean isMatch = input.getPackage().getName().startsWith(strPackage);
                    if (isMatch) {
                        return true;
                    }
                }
                return false;
            };
        }
    
        private Optional<? extends Class<?>> declaringClass(RequestHandler input) {
            return Optional.fromNullable(input.declaringClass());
        }
    }

    启动服务测试

  • 相关阅读:
    cf 786B. Legacy(线段树区间建图)
    cf 1416D. Graph and Queries (生成树重构+线段树维护dfs序)
    cf 1437E. Make It Increasing
    cf 1434D. Roads and Ramen (树上最长偶权链)
    cf 1413C (贪心排序+双指针)
    cf 1421E. Swedish Heroes (dp)
    CF1428 F.Fruit Sequences
    11.Redis详解(十一)------ 过期删除策略和内存淘汰策略
    10.Redis详解(十)------ 集群模式详解
    9.Redis详解(九)------ 哨兵(Sentinel)模式详解
  • 原文地址:https://www.cnblogs.com/cxyyh/p/10693308.html
Copyright © 2020-2023  润新知