Swagger访问路径添加前缀
预期效果
默认访问路径:http://ip:port`/swagger-ui.html`
可自由设置前缀,比如/qianzhui
,那么访问路径为:http://ip:port`/qianzhui` /swagger-ui.html
实现
自定义前缀的属性:swagger.prefix
,配置该属性的值,即可实现Swagger访问路径添加前缀。
静态资源通过ResourceHandler定义访问路径;接口则通过RedirectViewController重定向。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author markix
*/
@Configuration
public class SwaggerPrefixConfiguration implements WebMvcConfigurer {
@Value("${swagger.prefix:}")
private String swaggerPrefix;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (isPrefixSet()) {
registry.addResourceHandler(swaggerPrefix + "/swagger-ui.html*").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler(swaggerPrefix + "/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
if (isPrefixSet()) {
registry.addRedirectViewController(swaggerPrefix + "/v2/api-docs", "/v2/api-docs").setKeepQueryParams(true);
registry.addRedirectViewController(swaggerPrefix + "/swagger-resources", "/swagger-resources");
registry.addRedirectViewController(swaggerPrefix + "/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui");
registry.addRedirectViewController(swaggerPrefix + "/swagger-resources/configuration/security", "/swagger-resources/configuration/security");
registry.addRedirectViewController("/swagger-ui.html", "/404");
}
}
private boolean isPrefixSet() {
return swaggerPrefix != null && !"".equals(swaggerPrefix) && !"/".equals(swaggerPrefix);
}
/* @Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.addPathPrefix(swaggerPrefix, clazz -> clazz.isAssignableFrom(ApiResourceController.class));
}*/
}
reference:
SpringBoot集成Swagger
还没有评论,来说两句吧...