美文网首页
springcloud Alibaba 2021.0.1.0 s

springcloud Alibaba 2021.0.1.0 s

作者: IT祖师爷 | 来源:发表于2022-05-23 01:01 被阅读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")

    相关文章

      网友评论

          本文标题:springcloud Alibaba 2021.0.1.0 s

          本文链接:https://www.haomeiwen.com/subject/oinlprtx.html