SpringBoot如何整合Swagger框架并设置请求头token默认值呢?

欣喜 SpringBoot 发布时间:2024-01-25 16:07:39 阅读数:15972 1
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
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringBoot/202401/7781.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者