swagger2使用遇到的坑

    1,swagger-ui.html页面测试接口时,报如下错误:
       TypeError: NetworkError when attempting to fetch resource fetch
       说明a) 单独访问该接口正常
              b) 地址服务器访问swagger-ui.html 正常
              c) 使用域名访问报错,切不同浏览器错误描述不一致
       原因:swagger跨域问题
       解决方案:nginx做代理内网域名时,
       增加反向代理-做跨域支持
       location /apis {
            rewrite  ^.+apis/?(.*)$ /$1 break;
            include  uwsgi_params;
               proxy_pass   http://server:port;
       }
      配置文件中增加swagger访问域名
      springfox.documentation.swagger.v2.host = xxx.xxx.com(.cn)


    2,访问swagger-ui.html页面,一直弹出一个框:
        Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway. The base url is the root of where all the swagger resources are served. For e.g. if the api is available at http://example.org/api/v2/api-docs then the base url is http://example.org/api/. Please enter the location manually:
      这个错误,有多很多种情况
      1),没有增加@EnableSwagger2 启用swagger的配置
         解决方案:SwaggerConfig上增加@EnableSwagger2,启用swagger的配置
      2),被类似shiro的权限控制组件拦截
         解决方案:过滤swagger页面的权限控制
                     /swagger-ui.html
                     /webjars/**
                     /swagger-resources/**
                     /v2/**
      3),以上信息都配置了,仍然报错。经测试:@EnableSwagger2配置更换到启动类上可正常访问
           但这不是肯定不是根本原因。后来经过比对配置文件,发现SwaggerConfig类上的注解
           @ConditionalOnProperty(prefix = "xxx", name = "yyy", havingValue = "true")修改了
           对于springboot熟悉的人。看到这个可能已经知道原因了。@ConditionalOnProperty注解控制此类上的其他注解是否生效
            解决方案:修改配置文件中的xxx.yyy和配置文件(配置中心)的一致

你可能感兴趣的:(swagger,问题记录)