zoukankan      html  css  js  c++  java
  • 传统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();
        }
    
    
    }
  • 相关阅读:
    MyBatis+MySQL 返回插入的主键ID
    微信被动回复用户消息-文本消息-springmvc环境下自动生成xml
    微信自动回复消息示例
    微信自定义菜单
    微信获取二维码
    微信被动回复用户消息-文本消息-填坑
    微信获得access-token
    设置ckeditor的高度
    Java三行代码搞定MD5加密
    Highchart
  • 原文地址:https://www.cnblogs.com/notably/p/15719610.html
Copyright © 2011-2022 走看看