Spring Cloud 之 Knife4j集成(八)
java开发的小伙伴对swagger并不陌生,swagger节省了开发人员很多时间,但是笔者在使用的时候总觉得欠缺点什么,就是它的“非国人”UI。看起来十分不爽,相比于swagger,JApiDocs看起来更符合国人的审美观。但是JApiDocs缺不能像swagger一样在线调试。而Knife4j解决了这一问题,它不但能在线调试接口,还有国人审美观的UI。
Knife4j的前身是swagger-bootstrap-ui,为了契合微服务的架构发展,由于原来swagger-bootstrap-ui采用的是后端Java代码+前端Ui混合打包的方式,在微服务架构下显的很臃肿,因此项目正式更名为knife4j。
Knife4j源码:https://github.com/xiaoymin/swagger-bootstrap-ui
Knife4j Demo源码:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo
废话不多说,开搞!!!
我们仍然在之前搭建的x-demo-service基础上集成Knife4j
1、修改根项目spring-cloud-x的build.gradle配置文件,第4行增加knife4j依赖。
1 dependencyManagement { 2 imports { mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") } 3 imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } 4 imports { mavenBom "com.github.xiaoymin:knife4j-dependencies:2.0.5" } 5 }
2、修改子模块x-demo-service的build.gradle文件,增加knife4j-spring-boot-starter依赖
1 dependencies { 2 compile project(":x-demo-service-api") 3 4 compile("org.springframework.cloud:spring-cloud-starter-netflix-eureka-client") 5 compile("com.github.xiaoymin:knife4j-spring-boot-starter") 6 }
3、新建Knife4j配置JAVA类
1 /** 2 * @author Leo 3 */ 4 @EnableSwagger2 5 @EnableKnife4j 6 @Configuration 7 public class Knife4jConfig { 8 9 @Bean(value = "defaultApi2") 10 public Docket defaultApi2() { 11 Docket docket = new Docket(DocumentationType.SWAGGER_2) 12 .apiInfo(apiInfo()) 13 .groupName("这是一个分组名称") 14 .select() 15 .apis(RequestHandlerSelectors.basePackage("com.x.demo.controller")) 16 .paths(PathSelectors.any()) 17 .build(); 18 return docket; 19 } 20 21 private ApiInfo apiInfo() { 22 return new ApiInfoBuilder() 23 .title("x-demo-service接口文档") 24 .description("x-demo-service接口文档") 25 .termsOfServiceUrl("https://www.cnblogs.com/shileibrave/") 26 .contact(new Contact("Leo", "https://www.cnblogs.com/shileibrave/", "shileibrave@163.com")) 27 .version("1.0") 28 .build(); 29 } 30 }
4、修改Controller类
修改了第4行,第12行。@Api和@ApiOperation都是swagger注解,不明白swagger注解的自己恶补吧。
1 /** 2 * @author Leo 3 */ 4 @Api(tags = "DemoApiProviderController") 5 @RestController 6 @Slf4j 7 public class DemoApiProviderController implements ServiceDemoApi { 8 9 @Value("${server.port}") 10 String port; 11 12 @ApiOperation(value = "sayHello接口") 13 @Override 14 public BaseResponse sayHello(BaseRequest request) { 15 BaseResponse response = new BaseResponse(); 16 response.setCode("0000"); 17 response.setMessage("success"); 18 response.setData("ServiceDemoApi: " + port); 19 return response; 20 } 21 }
5、重启x-demo-service服务
在浏览器中输入:http://localhost:8081/doc.html,Knife4j主页
查看sayHello接口文档
调试sayHello接口
到此单体服务集成Knife4j完成,后面将SpringCloud网关的时候,再说一下网关和Knife4j如何集成。
原文地址:https://www.cnblogs.com/shileibrave/p/14437592.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 快速入门介绍Java中强大的String.format()
- CentOS 7.0如何启动多个MySQL实例教程(mysql-5.7.21)
- Javascript中prototype与__proto__的关系详解
- python文本数据相似度的度量
- 详细介绍Android-Room数据库的使用
- Node.JS循环删除非空文件夹及子目录下的所有文件
- JS中touchstart事件与click事件冲突的解决方法
- Vue 仿QQ左滑删除组件功能
- 浅谈angular4.0中路由传递参数、获取参数最nice的写法
- javascript变量提升和闭包理解
- Android如何基于坐标对View进行模拟点击事件详解
- Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
- Python中的pack和unpack的使用
- 基于express中路由规则及获取请求参数的方法
- 浅谈PHP中pack、unpack的详细用法