zoukankan      html  css  js  c++  java
  • SpringBoot集成Swagger-Bootstrap-UI(已改名为Knife4j)

    1、前言

    在上一篇文章中使用了SpringBoot整合Swagger2,搭建Restful API在线文档( 链接 )。但是有大佬开发出了功能更加强大的在线文档框架——Swagger-Bootstrap-UI,现在已经更名为Knife4j,因为仅仅一个Swagger-Bootstrap-UI皮肤已经不能满足开发者的需求,需要增加更多的服务端代码来满足开发者的需求,所以更改后的Knife4j不仅仅将前身的Ui皮肤通过Vue技术栈进行了重写,也增加了更多个性化的特性增强功能,基于springfox项目以及OpenAPI的规范,当然它也是基于Swagger的。Knife4j目前主要支持以Java开发为主,并且是依赖于大环境下使用的Spring MVC、Spring Boot、Spring Cloud框架。当然,Knife4j也提供了离线版本,只要是符合Swagger的OpenAPI版本的规范JSON,都可以通过简单的配置进行适配,离线版本是适合于任何语言中使用Swagger的,非常的灵活、方便。

    1. 该开源项目GitHub地址:https://github.com/xiaoymin/Swagger-Bootstrap-UI
    2. 该开源项目中文文档地址(knife4j):https://doc.xiaominfo.com

    下面使用SpringBoot来整合Knife4j,如下所示:

    2、添加Maven依赖

    01
    02
    03
    04
    05
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
        <version>2.0.7</version>
    </dependency>

    3、创建Config配置类

    基于之前例子的代码:

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    @Configuration
    @EnableSwagger2WebMvc
    public class SwaggerConfig {
        @Bean
        public Docket docket(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.thr.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
     
        private ApiInfo apiInfo(){
            return new ApiInfoBuilder()
                    // 页面标题
                    .title("标题:springboot整合Knife4j项目API文档")
                    // 项目描述
                    .description("描述:springboot整合Knife4j项目API文档")
                    // 服务条款网址
                    .termsOfServiceUrl("https://www.cnblogs.com/tanghaorong")
                    // 作者信息
                    .contact(new Contact("唐浩荣","www.tanghaorong.com","XXXXXX@qq.com"))
                    // 许可证
                    .license("Apache 3.0")
                    // 版本号
                    .version("v1.0")
                    .build();
        }
    }

    4、编写Restful接口

    注意:Swagger的注解同样适用于Knife4j,因为它本来就是在Swagger的基础上来设计这个框架的。

    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    package com.thr.controller;
     
    import com.thr.entity.User;
    import com.thr.service.UserService;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
     
    import java.util.List;
     
    @Api(value = "用户",tags = "用户信息模块")
    @RestController
    @RequestMapping(value = "/user")
    public class UserController {
     
        @Autowired
        private UserService userService;
     
        /**
         * 查询所有用户信息
         * @return
         */
        @GetMapping(value = "/findAll")
        @ApiOperation(value = "查询所有用户信息", notes = "获取所有用户信息")
        public List<User> findAll(){
            List<User> userList = userService.findAll();
            return userList;
        }
        /**
         * 根据id查询用户信息
         * @param id
         * @return
         */
        @GetMapping(value = "/findUserById/{id}")
        @ApiOperation(value = "根据id查询用户信息", notes = "根据id获取用户信息")
        public User findUserById(@PathVariable(value = "id") Integer id){
            return userService.findUserById(id);
        }
     
        /**
         * 添加用户信息
         * @param user
         */
        @PostMapping(value = "/addUser")
        @ApiOperation(value = "添加用户信息")
        public void addUser(User user){
            user.setUsername("John");
            user.setPassword("123456");
            user.setAge(22);
            user.setAddress("中国重庆");
            userService.addUser(user);
        }
        /**
         * 修改用户信息
         * @param user
         */
        @PutMapping(value = "/updateUserById")
        @ApiOperation(value = "修改用户信息")
        public void updateUserById(User user){
            user.setId(3L);
            user.setUsername("Marry");
            user.setPassword("123456");
            user.setAge(20);
            user.setAddress("中国湖南");
            userService.updateUserById(user);
        }
        /**
         * 删除用户信息
         * @param id
         */
        @DeleteMapping(value = "/deleteUserById/{id}")
        @ApiOperation(value = "删除用户信息")
        public void deleteUserById(@PathVariable(value = "id") Integer id){
            System.out.println("Delete请求...");
            userService.deleteUserById(id);
        }
    }

    5、启动项目并测试

    启动项目,如果没有报错,然后访问地址:http://localhost:{自己设置的端口}/doc.html 即可。我的地址为:http://localhost:8080/doc.html#/home   效果图,如下:

    image


    测试接口(这里就测试一个查询所有用户信息),效果图如下:

    image

    可以发现使用Knife4j的调试很像PostMan来测试接口。

    转https://www.cnblogs.com/tanghaorong/p/14443469.html

  • 相关阅读:
    R语言学习——欧拉计划(11)Largest product in a grid
    R语言学习——欧拉计划(3)Largest prime factor 求最大质因数
    R语言学习——欧拉计划(3)Largest prime factor 求最大质因数
    python中matplotlib的颜色及线条控制
    python中matplotlib的颜色及线条控制
    R语言学习——欧拉计划(1)Multiples of 3 and 5
    R语言学习——欧拉计划(1)Multiples of 3 and 5
    R语言学习——循环判断语句
    R语言学习——循环判断语句
    R语言学习——数据框
  • 原文地址:https://www.cnblogs.com/smallfa/p/15102364.html
Copyright © 2011-2022 走看看