想把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微服务版本,直接部署这个微服务就可以(但是要额外启动多一个微服务,内存紧张...)。

03-05 23:31