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   效果图,如下:

SpringBoot集成Swagger-Bootstrap-UI(已改名为Knife4j)


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

SpringBoot集成Swagger-Bootstrap-UI(已改名为Knife4j)

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

 

 

 

 

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

上一篇:swagger升级knife4j:一路上升级打怪


下一篇:swagger升级版 knife4j的使用