本次主要是描述我在配置过程中遇到的问题--统一返回封装把springdoc的返回也做了封装导致springdoc无法解析成文档进行展示;
关于配置描述可以移步springdoc的配置日记;表现出来的症状主要就是可以访问到swagger的页面但是不能展示和访问到自己的接口文档;
解决方案:
在统一返回中排除掉springdoc的相关内容
1、设置ResponseAdvice 配置
public class ResponseAdvice implements ResponseBodyAdvice {
@Override
public boolean supports(MethodParameter returnType, Class converterType) {
return true;
}
private static final String[] SWAGGER_PATHS = {
"/swagger-ui.html",
"/webjars/**",
"/swagger-resources/**",
"/v3/api-docs",
"/v3/api-docs.yaml"
};
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
//!!!重点部分,添加排除swagger相关的路径请求,如果有自定义路径的设置成自己自定义的路径
// 获取请求路径
String requestPath = request.getURI().getPath();
// 检查路径是否与Swagger相关
for (String path : SWAGGER_PATHS) {
if (requestPath.startsWith(path)) {
return body; // 直接返回body,不进行任何处理
}
}
/*
*其他内容按自己项目需求或原有设置书写
*/
}
}
2、设置WebConfig implements WebMvcConfigurer配置;
@Override
public void addInterceptors(InterceptorRegistry registry) {
//在这里增加排除 .excludePathPatterns("/swagger-ui/**", "/v3/api-docs/**")
registry.addInterceptor(new SaInterceptor()).excludePathPatterns("/swagger-ui/**", "/v3/api-docs/**");
}
注意以上两个配置文件名称是自己定义的有可能不一致,找到自己项目中对应的文件进行设置;
添加了上述配置之后就可以正常访问了~