SpringBoot如何整合Swagger框架并设置请求头token默认值呢?
swagger框架可为设置了相应注解的类及方法自动生成相应的测试页面,我们只需输入相应的信息,即可是实现接口的测试,那么我们大部分接口都加入了token验证,我们该如何引入swagger及设置默认token呢?
下文笔者将一一道来,如下所示
1.引入相应的swagger依赖 2.编写相应的swaggerConfig,添加默认token 3.在相应的controller上加入注解 采用以上方法 即可为swagger设置默认token例:SpringBoot为swagger设置默认token的方法及示例分享
引入maven依赖 <!-- swagger2--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!--防止进入swagger页面报类型转换错误,排除2.9.2中的引用,手动增加1.5.21版本--> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> <version>1.5.21</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.21</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> 创建配置类 SwaggerConfig.java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.env.Profiles; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; import java.util.Arraylist; /** * @author java265.com */ @Configuration @EnableSwagger2 //开启Swagger2 public class SwaggerConfig { /** * 配置Swagger的Docket的bean实例 * @return */ @Bean public Docket docket(Environment environment) { //设置只在开发中环境中启动swagger Profiles profiles=Profiles.of("dev"); //表示如果现在是dev环境,则返回true 开启swagger boolean flag=environment.acceptsProfiles(profiles); /*添加接口请求头参数配置 没有的话 可以忽略*/ ParameterBuilder tokenPar = new ParameterBuilder(); List<Parameter> pars = new ArrayList<>(); tokenPar.name("token").description("令牌").defaultValue("设置token默认值").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); pars.add(tokenPar.build()); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) //是否启动swagger 默认启动 .enable(flag) //所在分组 .groupName("java265") .select() //指定扫描的包路径 .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) //指定扫描的请求,这里表示扫描 /hello/ 的请求 //.paths(PathSelectors.ant("/hello/**")) .build() .globalOperationParameters(pars); } /** * 配置ApiInfo信息 * @return */ private ApiInfo apiInfo() { //作者信息 Contact author = new Contact("java265", "https://www.java265.com/", "admin@java265.com"); return new ApiInfo( "Swagger测试", "Swagger描述", "1.0", "urn:tos", author, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList() ); } } 但是如果有其他配置继承了 WebMvcConfigurationSupport 就需要增加资源映射 不然会失效 (尽量不要使用继承的方式,可以改为实现 implements WebMvcConfigurer) @Configuration public class WebMvcConfigurer extends WebMvcConfigurationSupport { /** * 发现如果继承了WebMvcConfigurationSupport, 需要重新指定静态资源 * */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations( "classpath:/static/"); registry.addResourceHandler("swagger-ui.html").addResourceLocations( "classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations( "classpath:/META-INF/resources/webjars/"); super.addResourceHandlers(registry); } } 如果配置了拦截器 也需要去掉相应拦截 List<String> urls = new LinkedList<>(); urls.add("/favicon.ico"); urls.add("/error"); urls.add("/swagger-resources/**"); urls.add("/webjars/**"); urls.add("/v2/**"); urls.add("/doc.html"); urls.add("**/swagger-ui.html"); urls.add("/swagger-ui.html/**"); registry.addInterceptor(authenticationInterceptor()) .excludePathPatterns(urls) 这是因为springboot版本是2.6以上版本,降低springboot版本为 2.1.10.RELEASE 或 加上配置 spring: mvc: pathmatch: matching-strategy: ant_path_matcher
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。