• 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 - 墨天轮

  • 相关阅读:
    2023-10-25 精神分析-领悟新技术的错误做法-持续数年的错误做法-记录与分析
    vue3 参数传递 props
    【LeetCode练习】19. 删除链表的倒数第 N 个结点(中等|JS|快慢指针)
    VM装MACos
    java毕业设计——基于java+JSP+J2EE的户籍管理系统设计与实现——户籍管理系统
    基础 | 并发编程 - [锁]
    php实现图片加法验证码
    Spring AOP(面向切面编程)是什么?
    微信小程序文字上下无缝轮播(滚动效果)
    《Mycat分布式数据库架构》之Mycat管理
  • 原文地址:https://blog.csdn.net/YangangwuWuyangang/article/details/125409677