• 【swagger】 swagger-ui的升级版swagger-bootstrap-ui


    swagger-bootstrap-ui是基于swagger-ui做了一些优化拓展:

    swagger-ui的界面:

    swagger-bootstrap-ui界面:

     

     

     相比于原生的swagger-ui ,swagger-bootstarp-ui提供了更好的ui界面,以及入参,出参直观的分层;下面将swagge-bootstrap-ui整合到springboot项目中:

       
      //springboot版本
      <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
            <!--swagger相关依赖-->
            <!--原生swagger-ui-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.9.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.9.2</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-bean-validators</artifactId>
                <version>2.9.2</version>
            </dependency>
            <!--增强swagger-bootstrap-ui-->
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>swagger-bootstrap-ui</artifactId>
                <version>1.9.3</version>
            </dependency>
            <!-- # 增加两个配置解决 NumberFormatException -->
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>1.5.22</version>
            </dependency>
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-models</artifactId>
                <version>1.5.22</version>
            </dependency>
    @Slf4j
    @Configuration
    @EnableSwagger2
    @EnableSwaggerBootstrapUI
    public class Swagger2Config implements WebMvcConfigurer {
    
        /**
         * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
         *
         * @param registry
         */
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
    
        /**
         * 帮助中心 (不同的模块这里分不同的包扫描basePackage)
         * Docket 可以配置多个
         *
         * @return
         */
        @Bean
        public Docket assist() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .globalOperationParameters(setRequestHeaders())
                    //.apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.xxxx.modules.assist.controller"))
                    //加了ApiOperation注解的类,才生成接口文档
                    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                    .paths(PathSelectors.any())
                    .build()
                    .groupName("帮助中心");
        }
        /**
         * 设置请求头
         *
         * @return
         */
        private List<Parameter> setRequestHeaders() {
            ParameterBuilder ticketPar = new ParameterBuilder();
            List<Parameter> pars = new ArrayList<Parameter>();
            ticketPar.name("token").description("用户token")
                    .modelRef(new ModelRef("string")).parameterType("header")
                    .required(false).build(); //header中的ticket参数非必填,传空也可以
            pars.add(ticketPar.build());      //根据每个方法名也知道当前方法在设置什么参数
            return pars;
        }
    }

    建议在启动类中,直接将swagge-ui文档记录下来

        public static void main(String[] args) throws Exception {
            ConfigurableApplicationContext application = SpringApplication.run(StageApplication.class, args);
            Environment env = application.getEnvironment();
            String ip = InetAddress.getLocalHost().getHostAddress();
            String port = env.getProperty("server.port");
            //String path = env.getProperty("server.servlet.context-path");
            String active = env.getProperty("spring.profiles.active");
            String maxFileSize = env.getProperty("spring.servlet.multipart.max-file-size"); //最大文件大小
            String maxRequestSize = env.getProperty("spring.servlet.multipart.max-request-size"); //最大请求大小
            log.info("
    ----------------------------------------------------------
    	" +
                    "Application is running! Access URLs:
    	" +
                    "Doc: 		http://" + ip + ":" + port + "/doc.html
    	" +
                    "spring-profiles-active: 		" + active + "
    	" +
                    "max-file-size: 		" + maxFileSize + "
    	" +
                    "max-request-size: 		" + maxRequestSize + "
    " +
                    "----------------------------------------------------------");
        }

  • 相关阅读:
    Java对【JSON数据的解析】--Gson解析法
    Java对【JSON数据的解析】--官方解析法
    Java之JSON数据
    网络编程应用:基于UDP协议【实现聊天程序】--练习
    {网络编程}和{多线程}应用:基于UDP协议【实现多发送方发送数据到同一个接收者】--练习
    PHP获取页面执行时间的方法(推荐)
    Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)
    Elasticsearch 全字段搜索_all,query_string查询,不进行分词
    mysql 查询某字段值全是数字
    linux服务器中Apache隐藏index.php失败
  • 原文地址:https://www.cnblogs.com/july-sunny/p/13826723.html
Copyright © 2020-2023  润新知