Swagger在Spring Boot项目中不能正常打开解决方法

有两种情况可能导致Swagger无法正常打开

1.是配置了WebMvc导致的

2.是配置了消息转换器HttpMessageConverter导致的

 

1.项目配置了@EnableWebMvc的标签或继承了WebMvcConfirguactionSupport这个类的话,由于接管了整个Spring MVC则需要把Swagger的规则写入到registry

 

@Configuration
@EnableSwagger2
public class MyConfiguration extends WebMvcConfigurationSupport{
 /**
     * swagger ui资源映射
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");

        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        registry.addResourceHandler("/swagger-resources/**")
                .addResourceLocations("classpath:/META-INF/resources/swagger-resources/");

        registry.addResourceHandler("/swagger/**")
               .addResourceLocations("classpath:/META-INF/resources/swagger/");

        registry.addResourceHandler("/v2/api-docs/**")
                .addResourceLocations("classpath:/META-INF/resources/v2/api-docs/");
    }

}

 

2.项目配置了HttpMessageConverter消息转换器 ,我们需要把Swagger的链接忽略掉不加入消息处理器中处理

 

@Component
public class ModelMessageConverter implements HttpMessageConverter<Object> {

 @Override
    public boolean canRead(Class<?> clazz, MediaType mediaType) {
        // 获取全局Request
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        // 忽略Swagger链接,不进入消息处理器中处理
        if(request.getRequestURL().indexOf("api-docs")!=-1||request.getRequestURL().indexOf("webjars")!=-1||request.getRequestURL().indexOf("swagger")!=-1){
            return false;
        }
        return true;
    }

    @Override
    public boolean canWrite(Class<?> clazz, MediaType mediaType) {
        // 获取全局Request
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        // 忽略Swagger链接,不进入消息处理器中处理
        if(request.getRequestURL().indexOf("api-docs")!=-1||request.getRequestURL().indexOf("webjars")!=-1||request.getRequestURL().indexOf("swagger")!=-1){
            return false;
        }
        return true;
    }
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值