• 传统ssm项目集成swagger404,swagger弹框


    周六工作上要新搭一个工程,但要依赖公司的一套老框架,加了三四天班功能上实现了,但要求弄swagger文档的时候有点问题。

    访问ip:port/xxx/swagger-ui.html 的时候弹框提示,然后我F12 看了一下是有个接口请求404:

     

    有请求那问题就很好解决了,猜测一下,结合弹框提示大概可以猜出提示是因为这个接口404,再看下springmvc拦截器的配置:

    问题原因:

    可以看到我这里使用的是拦截 /api/*的请求,所以swagger的jar包中的接口也要url匹配为 /api/*的才会被转发,很明显swagger页面的请求是跟页面上下文关联的

    所以试一下  ip:port/xxx/api/swagger-resources/configuration/ui、ip:port/xxx/api/crop-etax/api/v2/api-docs 两个请求,均有返回:

    再试下ip:port/xxx/api/swagger-ui.html这个页面404

    那就有办法了,一种是拦截请求的时候把 swagger的请求给拦了,或暴力一点 servlet-mapping 拦 /* 

    当然上述方法我不推荐

    拦/* 的话可能会导致访问静态资源404 ,那最合适的解决办法是在项目的 mvc配置文件中增加 swagger的静态资源:

     <mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
        <mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>

     SwaggerConfig:

    @Configuration
    @EnableSwagger2
    @EnableWebMvc
    public class SwaggerConfig  {
    
        @Bean
        public ApiInfo apiInfo(){
            return new ApiInfoBuilder()
                    .title("企业集团")
                    .description("")
                    .version("1.0.0")
                    .build();
        }
        @Bean
        public Docket docket(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .enable(true)
                    .apiInfo(apiInfo())
                    .select()
    
                    .apis(
                            RequestHandlerSelectors.basePackage("")// 类路径
                    )
                    .paths(PathSelectors.any())
                    .build();
        }
    
    
    }
  • 相关阅读:
    CSS3的box-sizing属性
    html5 --基础笔记2
    html5--基础笔记
    CSS3--阴影,渐变,背景图片
    响应式布局--流式布局
    angular中的this指向问题
    angular中控制器之间的通讯方式
    angular中的$http配置和参数
    console
    h5表单验证的css和js方法
  • 原文地址:https://www.cnblogs.com/notably/p/15719610.html
Copyright © 2020-2023  润新知