• springcloud Alibaba 2021.0.1.0 springboot 2.7.0 整合 Swagger3.0 报错解决方案


    1. 引入依赖,版本 3.0.0 只引入一个即可

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

    2. 配置类 SwaggerConfig

    package org.fh.config;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.List;
    
    import org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties;
    import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
    import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
    import org.springframework.boot.actuate.endpoint.ExposableEndpoint;
    import org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver;
    import org.springframework.boot.actuate.endpoint.web.EndpointMapping;
    import org.springframework.boot.actuate.endpoint.web.EndpointMediaTypes;
    import org.springframework.boot.actuate.endpoint.web.ExposableWebEndpoint;
    import org.springframework.boot.actuate.endpoint.web.WebEndpointsSupplier;
    import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpointsSupplier;
    import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier;
    import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.env.Environment;
    import org.springframework.util.StringUtils;
    
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.oas.annotations.EnableOpenApi;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    
    /**
     * 说明:Swagger 接口API生成
     * 作者:FH Admin Q313596790
     * from:fhadmin.cn
     */
    @Configuration
    @EnableOpenApi
    public class SwaggerConfig {
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.OAS_30)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("org.fh.controller"))	// 为当前包路径
                    .paths(PathSelectors.any())
                    .build();
        }
    
    	private ApiInfo apiInfo() {
    		return new ApiInfoBuilder()
    				.title("FH Admin Swagger3 RESTful API") 	// 页面标题
    				.version("3.0")								// 版本号
    				.description("fhadmin.cn")				    // 描述
    				.build();
    	}
    	
    	/**
    	  * 增加如下配置可解决Spring Boot 2.6.x以上 与Swagger 3.0.0 不兼容问题
    	**/
        @Bean
        public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier, ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties, WebEndpointProperties webEndpointProperties, Environment environment) {
            List<ExposableEndpoint<?>> allEndpoints = new ArrayList();
            Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
            allEndpoints.addAll(webEndpoints);
            allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
            allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
            String basePath = webEndpointProperties.getBasePath();
            EndpointMapping endpointMapping = new EndpointMapping(basePath);
            boolean shouldRegisterLinksMapping = this.shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);
            return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null);
        }
        private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {
            return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
        }
    
    }
    

    3.Swagger 拦截配置

    package org.fh.config;
     
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
    import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
     
    /**
     * 说明:Swagger 拦截配置
     * 作者:FH Admin
     * from fhadmin.org
     */
    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {
     
        @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");
        }
    }
     

    4. 访问 127.0.0.1:8081/swagger-ui/index.html

    5. 接口说明案例

    处理类上加注解,比如
    @Api("用户注册登录接口")
     
    在方法上加注解,比如
    @ApiOperation(value = "登录", notes="请求登录验证用户接口,校验登录是否成功")
    @ApiImplicitParam(name = "KEYDATA", value = "用户名密码混淆码组合", paramType = "query", required = true, dataType = "String")
      ​-----------------------------------------------------------------自定义表单
    28. 定义模版:拖拽左侧表单元素到右侧区域,编辑表单元素,保存表单模版
    29. 表单模版:编辑维护表单模版,复制表单模版,修改模版类型,预览表单模版
    30. 我的表单:选择表单模版,编辑表单规则,是否上传图片、附件、开启富文本、挂靠流程开关等
    31. 表单数据:从我的表单进去可增删改查表单数据,修改表单规则
    32. 挂靠记录:记录表单数据和流程实例ID关联记录,可删除
  • 相关阅读:
    web print
    datediff
    Typical AJAX
    sql中构建sql语句,再exec这条SQL语句
    ASP.NET中将数据输出到WORD、EXCEL、TXT、HTM
    sql中添加单引号
    sql语句批处理
    日期分组
    异步线程
    电脑内存大有什么好处?
  • 原文地址:https://www.cnblogs.com/m13002622490/p/16299758.html
Copyright © 2020-2023  润新知