zoukankan      html  css  js  c++  java
  • 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如何集成。

  • 相关阅读:
    .net log4dll的使用
    Myslq 5.7安装
    接口和抽象类有什么区别
    monkey测试
    JDK、Jmeter、Android环境变量配置
    聊天室
    tushrea知识笔记
    爬取图片
    python gui之tkinter事件处理
    ttk.Treeview
  • 原文地址:https://www.cnblogs.com/shileibrave/p/14437592.html
Copyright © 2011-2022 走看看