SpringCloud gateWay集成knife4j实现微服务聚合文档

最终成果

SpringCloud基础配置

<properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
    </properties>

SpringCloud 子服务集成knife4j

在knife4j 4.0版本之前,应用坐标

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>{<4.0.0版本}</version>
</dependency>

自4.0版本开始,maven组件的artifactId已经发生了变化(我这里使用了4.4.0),实际配置如下。

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

SwaggerConfig配置类文档,使用@EnableSwagger2WebMvc注解


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
//import springfox.documentation.swagger2.annotations.EnableSwagger2;
//import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfig {
    /**
     * 配置基本信息
     *
     * @return
     */
    @Bean
    public ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("xx开发文档【接口Api】")    //文档的标题,可自定义
                .description("开发文档")     //测试的接口文档,可自定义
                .termsOfServiceUrl("http://localhost:0000/")
//                .contact("1111@qq.com")  //联系人信息,可自定义
                .version("1.0")   //版本信息,可自定义
                .build();
    }

    /**
     * 配置文档生成最佳实践
     *
     * @param apiInfo
     * @return
     */
    @Bean
    public Docket createRestApi(ApiInfo apiInfo) {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.order.controllertest"))
                .paths(PathSelectors.any())
                .build().groupName("order");
    }
}

到这里子服务就已经实现完成!

SpringCloud gateway网关集成knife4j

引入maven文件,knife4j虽然给了最低版本说明,但实际对所有springCloud都有效,配置如下:

<dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-gateway-spring-boot-starter</artifactId>
            <version>4.4.0</version>
        </dependency>

application.yml完成配置如下,需要根据自己的子服务做路径的配置:

#knife4j的网关聚合配置 文档地址:http://{gateway.host}:{gateway.port}/doc.html
knife4j:
  #  # 聚合swagger文档
  gateway:
    enabled: true
    # 排序规则(tag/operation排序自4.2.0版本新增)
    # 取值:alpha-默认排序规则,官方swagger-ui默认实现,order-Knife4j提供的增强排序规则,开发者可扩展x-order,根据数值来自定义排序
    tags-sorter: order
    operations-sorter: order
    # 指定手动配置的模式(默认为该模式)
    strategy: manual
    routes:
      - name: 第三方的接口
        # 真实子服务访问url地址-提供OpenAPI的文档
        url: /gateway/order/v2/api-docs?group=order
        #        url: /v3/api-docs
        service-name: ac-search
        # 路由前缀
        # 兼容OpenAPI3规范在聚合时丢失contextPath属性的异常情况,由开发者自己配置contextPath,Knife4j的前端Ui做兼容处理,与url属性独立不冲突,仅OpenAPI3规范聚合需要,OpenAPI2规范不需要设置此属性,默认为(apiPathPrefix)
        context-path: /
        order: 2
      - name: 订单接口
        #我这里网关的前缀是gateway,订单的前缀是order,路由转发时过滤掉了gateway。事实上我们也可以通过路由转发到其它单个服务上面去,从而达到聚合其它服务的说明文档,比如下面的云服务接口
        url: /gateway/order/v2/api-docs?group=order
        service-name: ac-order=
        # 路由前缀
        context-path: /
        order: 3

      - name: 云服务接口
        #        url: /ac-search/v2/api-docs?group=default
        url: /gateway/zybYun/v2/api-docs?group=zybYun
        service-name: ac-order=
        # 路由前缀
        context-path: /
        order: 4

结语

到此,springCloud微服务集成knife4j4.4.0已经完成。希望这篇文章对您有所帮助!

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: cloud-nacos-gateway-knife4j:swagger聚合文档是使用Spring Cloud和Nacos作为技术栈开发的一种解决方案。 Spring Cloud是一套开发分布式应用的工具集,它基于Spring Boot,用于构建微服务架构的应用程序。它提供了诸如服务注册与发现、服务追踪、负载均衡等功能,可以方便地实现微服务的开发和管理。在这个解决方案中,我们使用了Spring Cloud来构建和管理微服务。 Nacos是一个动态服务发现、配置管理和服务管理平台。它提供了服务注册与发现、配置管理、动态路由等功能,可以方便地实现微服务的注册与发现、配置的动态管理。在这个解决方案中,我们将使用Nacos作为服务注册与发现的中心。 GatewaySpring Cloud的网关组件,它以微服务的方式构建网关,提供了统一的入口和出口,可以对请求进行路由、过滤、聚合等多种操作。在这个解决方案中,我们使用Gateway作为网关组件,统一管理和分发请求。 Knife4j是一个开源的Swagger文档聚合工具,它可以将多个微服务的Swagger文档聚合在一起,提供一个统一的API文档入口。在这个解决方案中,我们使用Knife4j聚合各个微服务的Swagger文档,方便开发人员查看和调试API接口。 综上所述,cloud-nacos-gateway-knife4j:swagger聚合文档使用了Spring Cloud、Nacos、GatewayKnife4j等技术,通过Spring Cloud构建和管理微服务,使用Nacos实现服务注册与发现,通过Gateway实现统一的请求分发和路由,再通过Knife4j将各个微服务的Swagger文档聚合在一起,方便开发人员进行API的查看和调试。这个解决方案可以提高开发效率、简化架构,使得微服务的开发和管理更加方便和高效。 ### 回答2: cloud-nacos-gateway-knife4j是基于Spring Cloud、Nacos、GatewayKnife4j等技术实现的Swagger聚合文档工具。 首先,这个工具使用了Spring Cloud框架,它是一种用于构建分布式系统的解决方案。Spring Cloud提供了一系列插件和组件,使得我们可以轻松地构建、部署和管理分布式应用。这些组件包括服务发现与注册、服务间调用、负载均衡、断路器等等。在cloud-nacos-gateway-knife4j中,我们使用Spring Cloud实现服务注册与发现的功能,使得不同的微服务可以方便地相互调用。 其次,cloud-nacos-gateway-knife4j还使用了Nacos作为服务的注册中心。Nacos是一个开源的动态服务发现、配置和服务管理平台,它提供了服务注册、服务发现、服务配置、路由配置等功能。在cloud-nacos-gateway-knife4j中,我们使用Nacos作为服务注册中心,来管理微服务的地址和配置信息。 另外,cloud-nacos-gateway-knife4j还使用了Gateway作为API网关。API网关是系统的统一入口,它可以处理一些通用的非业务功能,如身份认证、请求转发、限流等等。在cloud-nacos-gateway-knife4j中,我们使用Gateway作为API网关,实现了请求的转发和一些基本的安全控制功能。 最后,cloud-nacos-gateway-knife4j还使用了Knife4j作为Swagger的UI界面。Swagger是一种用于构建、文档化和调试RESTful接口的工具,它提供了一套非常直观的界面来展示接口信息和测试接口。在cloud-nacos-gateway-knife4j中,我们使用Knife4j来生成并展示聚合文档,使得接口文档更加友好和易用。 总的来说,cloud-nacos-gateway-knife4j是一个基于Spring Cloud、Nacos、GatewayKnife4j等技术实现的Swagger聚合文档工具。它利用这些技术的优势,帮助开发者更好地管理和维护微服务,并提供了友好的界面来查看和测试接口文档。 ### 回答3: Cloud-Nacos-Gateway-Knife4j 是一个使用 Spring Cloud 和 Nacos 技术实现聚合文档,其中集成了 Swagger。它可以帮助开发者更便捷地查看和管理项目的 API 文档Spring Cloud 是一个开发微服务架构的框架,提供了许多功能,例如服务注册与发现、配置管理、负载均衡等。Nacos 是一个用于服务注册与发现、动态配置管理的平台,可以实现服务的自动发现和配置更新。这两个技术结合起来,可以方便地构建和管理微服务架构。 Cloud-Nacos-Gateway-Knife4j 中的 Gateway 是一个 API 网关,它可以承担路由和负载均衡的作用,将外部请求转发给后端的微服务Knife4j 是一个为 Swagger 提供增强功能的工具,可以生成美观的 API 文档,并提供了在线测试接口的功能。 在使用 Cloud-Nacos-Gateway-Knife4j 架构时,我们可以通过 Nacos 注册中心管理和发现微服务,以及实现动态的配置更新。Gateway 作为入口,将外部请求转发到相应的微服务。同时,我们可以使用 Knife4j 生成并展示微服务的 API 文档,便于开发者查看和调试接口。 总之,Cloud-Nacos-Gateway-Knife4j 提供了一种基于 Spring Cloud 和 Nacos 的微服务架构解决方案,提供了服务注册发现、配置管理、API 文档和在线测试等功能,为开发者带来了更加便捷和高效的开发体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值