• SpringBoot整合knife4j框架(可生成离线接口文档),并设置接口请求头token默认值


    功能和swagger类似

    官网地址:https://doc.xiaominfo.com/knife4j/

    这个框架可以设置返回字段的描述 

    引入依赖

        <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-spring-boot-starter</artifactId>
                <version>2.0.7</version>
            </dependency>

      Knife4jConfig .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.ParameterBuilder;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.schema.ModelRef;
    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;
    import java.util.List;
    
    
    /**
     * @author yvioo。
     */
    @Configuration
    @EnableSwagger2  //开启Swagger2
    public class Knife4jConfig {
    
    
        /**
         * 配置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("yvioo")
                    .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("yvioo", "https://www.cnblogs.com/pxblog/", "111@qq.com");
    
    
            return new ApiInfo(
                    "Knife4j测试",
                    "Knife4j描述",
                    "1.0",
                    "urn:tos",
                    author,
                    "Apache 2.0",
                    "http://www.apache.org/licenses/LICENSE-2.0",
                    new ArrayList()
            );
    
        }
    }

    控制器的写法和swagger基本类似

    @Api(tags = "首页模块")
    @RestController
    public class IndexController {
    
        @ApiImplicitParam(name = "name",value = "姓名",required = true)
        @ApiOperation(value = "向客人问好")
        @GetMapping("/sayHi")
        public ResponseEntity<String> sayHi(@RequestParam(value = "name")String name){
            return ResponseEntity.ok("Hi:"+name);
        }
    }

    但是如果有其他配置继承了 WebMvcConfigurationSupport 就需要增加资源映射 不然会失效

    @Configuration
    public class WebMvcConfigurer extends WebMvcConfigurationSupport {
    
        /**
         * 发现如果继承了WebMvcConfigurationSupport, 需要重新指定静态资源
         *
         */
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/**").addResourceLocations(
                    "classpath:/static/");
            registry.addResourceHandler("doc.html").addResourceLocations(
                    "classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations(
                    "classpath:/META-INF/resources/webjars/");
            super.addResourceHandlers(registry);
        }
    }

    效果

    离线接口文档

     浏览器访问

     使用dev环境 启动项目后  浏览器打开 http://localhost:8081/doc.html#/   我这里用的端口是8081

    整合swagger框架参考:https://www.cnblogs.com/pxblog/p/12942825.html

    -----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------ (蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)
  • 相关阅读:
    [导入]郎咸平在复旦大学的精彩演讲
    [导入]郎咸平介绍
    [导入]郎咸平网络文摘 在线交流论坛
    Delphi7,创建 RGB CMYK颜色分量圆 完整代码
    Excel分类汇总/平均/计数的办法
    Word插入 分节符实现多个页码
    Delphi 7中如何修改Form1: TForm1;
    在delphi 7里怎么给已有的单元文件改名
    Mac下安装mysql后无法启动,提示. ERROR! The server quit without updating PID file(就是账户权限不够)
    pip虚拟环境下倒出安装文件,或者批量导入安装。
  • 原文地址:https://www.cnblogs.com/pxblog/p/14831211.html
Copyright © 2020-2023  润新知