SpringBoot集成swagger实例分析(springboot,swagger,开发技术)

时间:2024-05-03 17:54:22 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

2.5 替换UI

上面的整个过程已经完成了,但是生成的接口文档的页面,其实很多人不太喜欢,觉得不太符合国人的使用习惯,所有又有一些大神,提供了其他的UI测试页面。这个页面的使用还是比较广泛的。

修改方式:只需引入一个依赖包:

<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>

然后把刚才实现的那个的那个方法再添加一条:

registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");

完成代码:

packagecom.lsqingfeng.springboot.config;

importcom.lsqingfeng.springboot.interceptor.TokenInterceptor;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.web.servlet.config.annotation.InterceptorRegistry;
importorg.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/*
@className:WebMvcConfig
@description:webMvc配置
@author:sh.Liu
@date:2022-01-1309:51
/
@Configuration
publicclassWebMvcConfigimplementsWebMvcConfigurer{

//@Override
//publicvoidaddInterceptors(InterceptorRegistryregistry){
////拦截
//registry.addInterceptor(newTokenInterceptor())
//.addPathPatterns("/**")
//.excludePathPatterns("/login");
//}

@Override
publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){
registry.addResourceHandler("/").addResourceLocations("classpath:/static/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/
")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
}
}

重新启动项目: 访问路径发生了变化: ip:端口号/doc.html

SpringBoot集成swagger实例分析

页面出现了。我们在看看我们的用户接口:

SpringBoot集成swagger实例分析

这个风格确实更加的直观,同时也是可以直接进行调试的。大部分的swagger都用的这个风格的文档。

三. SpringBoot集成swagger3

上面已经很详细的讲解了swagger2的集成方式,而swagger3的集成方式更加的简洁一些。

首先引入依赖:

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>

然后是替换注解: swagger2使用的开启注解是: @EnableSwagger2

而在swagger3中,这个注解要换成: @EnableOpenApi

配置类:

importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importspringfox.documentation.builders.RequestHandlerSelectors;
importspringfox.documentation.oas.annotations.EnableOpenApi;
importspringfox.documentation.spi.DocumentationType;
importspringfox.documentation.spring.web.plugins.Docket;

@Configuration
publicclassSwaggerConfig{
@Bean
publicDocketcreateRestApi(){
returnnewDocket(DocumentationType.OAS_30)//v2不同
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.swaggerv3.controller"))//设置扫描路径
.build();
}
}

要注意,里边的版本类型换成了 OAS_30, 就是swagger3的意思。

OAS 是 OpenAPI Specification 的简称,翻译成中文就是 OpenAPI 说明书。

同时访问地址:原始地址,也就是没换UI的地址: localhost:8080/swagger-ui/index.html这个要和swagger2区分开。

swagger3的原始UI风格也发生了一些变化:

SpringBoot集成swagger实例分析

同时swagger3也是可以更换UI的。方法和swagger2一样。

四. swaggerUI 拦截器和跨域冲突处理

如果我们的项目中有关于跨域的处理,同时还有拦截器,然后还要使用swagger,这种情况大家要注意了,有可能我们的拦截器会将swagger中的页面路径拦截掉导致swagger页面出不来,当我们在拦截器中把swagger的页面排除掉的时候,也有可能会导致跨域配置的失效。

具体解决方案简单提一下:

拦截器:

/*
拦截器配置

@authorliuShuai
*/
@Configuration
publicclassInterceptorConfigimplementsWebMvcConfigurer{

@Bean
publicTokenInterceptortokenInterceptor(){
returnnewTokenInterceptor();
}

@Override
publicvoidaddInterceptors(InterceptorRegistryregistry){
registry
.addInterceptor(tokenInterceptor())
.addPathPatterns("/")
.excludePathPatterns("/user/login")
.excludePathPatterns("/user/downloadExcel")
.excludePathPatterns("/swagger-resources/
","/webjars/","/v2/","/swagger-ui.html/**");
}

@Override
publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}

跨域配置:

importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.web.cors.CorsConfiguration;
importorg.springframework.web.cors.UrlBasedCorsConfigurationSource;
importorg.springframework.web.filter.CorsFilter;

/*
@className:CorsConfig
@description:
@author:sh.Liu
@date:2020-12-0210:16
/
@Configuration
publicclassCorsConfig{

@Bean
publicCorsFiltercorsFilter(){
CorsConfigurationconfig=newCorsConfiguration();
config.addAllowedOrigin("");
config.setAllowCredentials(true);
config.addAllowedMethod("
");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSourceconfigSource=newUrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**",config);
returnnewCorsFilter(configSource);
}
}

用这两种方式去配置,就可以让他们和平共处了。

另: 配套项目代码已托管中gitCode: gitcode.net/lsqingfeng/&hellip;

分支: feautre/MybatisPlus

相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

本文:SpringBoot集成swagger实例分析的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:windows server 2008 R2中IIS FTP安装部署的方法下一篇:

11 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18