• springboot2.4 集成wagger3


    1、、添加依赖 
    <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
    </dependency>

    2、如果你的应用集成了WebMvcConfigurationSupport
    ,那么对不起,swagger-ui界面将不再能访问。解决方案就是需要重新映射一下swagger的静态资源,再转发一下html的请求

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/swagger-ui/**")
    .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/").resourceChain(false);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/swagger-ui/").setViewName("forward:/swagger-ui/index.html");
    }
    }

    3、如果你的项目中有权限认证的拦截器,那么得放过swagger相关的请求,不然被你给拦截了还怎么访问。

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurationSupport {

    @Autowired
    private CommonInterceptor commonInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(commonInterceptor).addPathPatterns("/**")
    .excludePathPatterns(Arrays.asList("/swagger-ui.html", "/swagger-resources/**", "/v2/**", "/v3/api-docs"));
    }
    }

    4、配置全局凭证

    @Bean
    public Docket docket() {
    return new Docket(DocumentationType.OAS_30)
    .securitySchemes(securitySchemes())
    .securityContexts(securityContexts())
    .select()
    .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
    .build();
    }

    private List<SecurityScheme> securitySchemes() {
    List<SecurityScheme> securitySchemes = new ArrayList<>();
    securitySchemes.add(new ApiKey(CommonConstants.HEADER_TOKEN, CommonConstants.HEADER_TOKEN, "header"));
    return securitySchemes;
    }
    /**
    * 授权信息全局应用
    */
    private List<SecurityContext> securityContexts() {
    List<SecurityContext> securityContexts = new ArrayList<>();
    securityContexts.add(SecurityContext.builder()
    .securityReferences(defaultAuth())
    .forPaths(PathSelectors.any()).build());
    return securityContexts;
    }

    private List<SecurityReference> defaultAuth() {
    AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
    authorizationScopes[0] = authorizationScope;
    List<SecurityReference> securityReferences = new ArrayList<>();
    securityReferences.add(new SecurityReference(CommonConstants.HEADER_TOKEN, authorizationScopes));
    return securityReferences;
    }

    参考:SpringBoot中使用swagger3 - 墨天轮

  • 相关阅读:
    MMPose 1.0:迈向更优雅、更强大的姿态估计研发和应用框架
    wifi无线使用adb
    对DDD使用的一些建议
    动态密码 作为程序员之网络安全一定要看
    漫谈:C语言 C++ static究竟是什么
    React问题:LocalStorage 在提交后不显示数据并且状态在刷新时不能持续存在的问题
    Mac m1配置flutter开发环境
    20240301-1-ZooKeeper面试题(一)
    《计算机网络》:考研 2024/3/5 2.1.1-物理层基本概念引入
    1区TOP正刊,SCI&EI双检,IF逐年上涨,正在邀稿中~
  • 原文地址:https://blog.csdn.net/YangangwuWuyangang/article/details/125409677