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如何集成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM