乐趣区

关于springcloud:GatewayNacosKnife4jswagger的方案的补充

想把 Knife4j 集成到 gateway 里的办法,网上能搜寻到很多。这里我整顿一下,办法大抵是:

  1. Spring Cloud Gateway 集成 Knife4j

然而,可能你们会遇到一个问题,就是 doc 页面关上后,能见到对应的微服务分组,然而,却看不到接口列表。

那是因为,你们的微服务的文档,是在 /v2/apis-doc 路由里。
而 gateway 的 nacos 配置转发里,配的是这样的拦挡转发

-   id: sys_route
    uri: lb://cloud-sys
    predicates:
        - Path=/api/sys/**

就会导致微服务 sys_route 文档最终拼接进去的申请是/api/sys/v2/apis-doc

解决方案是,应用 gateway 的 filters 配置

-   id: sys_route
    uri: lb://cloud-sys
    predicates:
        - Path=/api/sys/**
    filters:
        - RewritePath=/api/sys/v2/api-docs, /v2/api-docs

(第一次接触 filters 的,举荐再看看 StripPrefix 属性)

PS:Knife4j 官网最近也出了 Knife4jAggregation 微服务版本,间接部署这个微服务就能够(然而要额定启动多一个微服务,内存缓和 …)。

退出移动版