最新公告
  • 新注册用户请前往个人中心绑定邮箱以便接收相关凭证邮件!!!点击前往个人中心
  • 生产环境禁用swagger常用方式

    0x01:使用@ConditionalOnProperty注解
    使用注解
    @ConditionalOnProperty(name = "swagger2.enable", havingValue = "true")  
    然后在测试配置或者开发配置中添加swagger2.enable = true 即可开启,生产环境不填则默认关闭Swagger
    @Configuration
    @EnableSwagger2
    @ConditionalOnProperty(name = "swagger2.enable", havingValue = "true")
    public class Swagger2 extends WebMvcConfigurationSupport {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    //为当前包路径
                    .apis(RequestHandlerSelectors.basePackage("com.yq.demo.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
        //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("Spring Boot 测试使用 Swagger2 构建RESTful API")
                    .contact(new Contact("java乐园""https://xxx.com""test@163.com"))
                    .version("1.0")
                    .description("User API 描述")
                    .build();
        }
        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/swagger-ui.html").addResourceLocations(
                    "classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations(
                    "classpath:/META-INF/resources/webjars/");
        }
    }
    在application.yml配置文件添加,启用swagger
    swagger2.enable: true
    0x02:使用注解@Profile
    @Configuration
    @EnableSwagger2
    @Profile("dev")
    public class Swagger2 extends WebMvcConfigurationSupport {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    //为当前包路径
                    .apis(RequestHandlerSelectors.basePackage("com.yq.demo.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
        //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("Spring Boot 测试使用 Swagger2 构建RESTful API")
                    .contact(new Contact("java乐园""https://xxx.com""test@163.com"))
                    .version("1.0")
                    .description("User API 描述")
                    .build();
        }
        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/swagger-ui.html").addResourceLocations(
                    "classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations(
                    "classpath:/META-INF/resources/webjars/");
        }
    }
    0x03:使用Docket的enable方法
    @Configuration
    @EnableSwagger2
    public class Swagger2 extends WebMvcConfigurationSupport {
        @Value("{swagger2.enable:false}")
        private boolean enableSwagger;
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .enable(enableSwagger)
                    .select()
                    //为当前包路径
                    .apis(RequestHandlerSelectors.basePackage("com.yq.demo.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
        //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("Spring Boot 测试使用 Swagger2 构建RESTful API")
                    .contact(new Contact("java乐园""https://xxx.com""test@163.com"))
                    .version("1.0")
                    .description("User API 描述")
                    .build();
        }
        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/swagger-ui.html").addResourceLocations(
                    "classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations(
                    "classpath:/META-INF/resources/webjars/");
        }
    }
    在application.yml配置文件添加,启用swagger
    swagger2.enable: true
    生成环境禁用Swagger非常必要,防止服务器的全部接口暴露给互联网。因为如果全部的接口暴露给互联网,就存在非常严重的安全隐患。容易受到黑客的攻击。
    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » 生产环境禁用swagger常用方式

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    参与讨论

    • 192会员总数(位)
    • 3737资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 614稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级