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

  • 相关阅读:
    144. Binary Tree Preorder Traversal
    excel 文本拼接
    excel中文转拼音(方便复制版本)
    odoo 日志文件太大处理,logfile自动轮替
    编码对象或者字串中包含Unicode字符怎样转换为中文
    odoo 返回成功提示信息
    odoo 对res_partner,res_users添加字段重启服务失败处理
    odoo 根据当前记录的值动态筛选many2many,many2one,one2many数据
    odoo 中%()d的使用
    nginx 监听非标准端口80,重定向端口丢失问题解决
  • 原文地址:https://www.cnblogs.com/qkhh/p/8228397.html
Copyright © 2011-2022 走看看