zoukankan      html  css  js  c++  java
  • spring-boot 集成 swagger 问题的解决

    spring-boot 集成 swagger

    网上有许多关于 spring boot 集成 swagger 的教程。按照教程去做,发现无法打开接口界面。

    项目由 spring mvc 迁移过来,是一个无界面纯 API 的项目。迁移之前就支持 swagger。

    【问题描述】

    第一个问题是无权限访问,这个问题好办,在 shiro 的配置里,设置

      /swagger-ui.html = anon

    再次测试仍不行,于是暂时禁用 shiro, 即将

      /** = user --> /** = anon

    这次的错误是 404。

    第二个问题是无法访问 swagger-ui

    查看控制台日志,发现程序会从 static/ 目录下找 /swager-ui.html 这个文件,但应用中根本没有 static/ 目录。而 swagger-ui.html 这个文件在 springfox-swagger-ui 这个依赖的 jar 包里。

    肯定是 spring-boot 处理资源文件的默认行为不支持从 jar 包里加载资源文件,需要重写默认的行为。

    增加一个 WebConfig,内容如下:

    @EnableWebMvc
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
                "classpath:/META-INF/resources/",
                "classpath:/resources/",
                "classpath:/static/",
                "classpath:/public/",
                "classpath*:/META-INF/resources/",
        };
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/**")
                    .addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
        }
    }

    关键是高亮的部分(其余部分都是默认行为)。

    再次测试,浏览器里输入  xxxx/swagger-ui.html 界面显示正常了。

    第三个问题:与 shiro 兼容

    恢复 shiro 的权限校验功能,即改回 /** = user. 再次打开 xxxx/swagger-ui.html 发现样式显示错误。

    这个原因是因为 swagger-ui 这个 jar 包里除了 swagger-ui.html 还有资源文件。资源文件被禁用了。因此需要在 shiro 配置文件里添加以下规则:

    /webjars*/** = anon

    【使用新的界面】

    上面集成的是默认界面,不太好用,网上找到了另一篇文章,使用了比较好的界面。可参照下面的链接进行配置:

    https://gitee.com/xiaoym/swagger-bootstrap-ui

  • 相关阅读:
    Android ble 蓝牙4.0 总结
    Java byte数据类型详解
    Cocos2d-X在SwitchControl使用
    【翻译mos文章】Linux x86 and x86-64 系统SHMMAX最大
    poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)
    Akka FSM 源代码分析
    HDU 4828 (卡特兰数+逆)
    [JSP][JSTL]页面调用函数--它${fn:}内置函数、是推断字符串是空的、更换车厢
    android 中国通信乱码问题
    Recall(检出率)和 Precision(准确性)
  • 原文地址:https://www.cnblogs.com/qkhh/p/8228397.html
Copyright © 2011-2022 走看看