springboot使用实现ResponseBodyAdvice全局拦截导致swagger无法显示的问题
springboot使用ResponseBodyAdvice全局拦截导致swagger无法显示的问题
·
1、异常展示

2、解决办法
在ResponseBodyAdvice的实现类中,给public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType)方法配置过滤条件
实现方式有多种,下面展示根据返回:判断包名是否属于 Swagger
@SneakyThrows
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
// 判断是否是 Swagger 的返回类型
String packageName = returnType.getDeclaringClass().getPackage().getName();
return !isSwaggerRequest(packageName);
}
private boolean isSwaggerRequest(String packageName) {
// 判断包名是否属于 Swagger
return packageName.startsWith("springfox.documentation") || packageName.startsWith("io.swagger");
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)