Spring Cloud Gateway 与 Knife4j 集成实践

news/2025/4/2 11:17:59/文章来源:https://www.cnblogs.com/charlie-blog/p/18803188

注意:写于 2025/1/10,未来时间可能失效,请根据具体情况实践。

在微服务架构中,Gateway 通常承担着路由转发、负载均衡、鉴权等职责,而 Knife4j 是一个集 Swagger2 和 OpenAPI3 为一体的增强解决方案,可以帮助开发者快速聚合使用OpenAPI 规范。

本文参考 Knife4j 文档,进行网关处集成实践。

在实践之前,已经准备好了两个微服务,并且已经使用注解注解。

微服务列表:

  • Auth service
  • Gateway Service
  • System Service

目录结构:

主要在 Gateway 中做修改,不涉及其他目录

增加 Knife4j 依赖:

这里请阅读官方文档,看需要什么依赖

在 maven 依赖文件中增加下面的依赖:

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

因为我已经在父依赖中增加管理,所以只需引入

Knife4j 服务发现配置
微服务配置之前已准备好了,使用 Nacos 为服务注册、配置中心。

为了方便,这里我使用的是服务发现模式,因为 Spring Boot 3 只支持 OpenAPI3 规范,所以版本选用 OpenAPI3,总的配置如下:

knife4j:gateway:enabled: truetags-sorter: alphaoperations-sorter: alphastrategy: discoverdiscover:enabled: trueversion: openapi3

访问页面
启动三个服务,成功后访问 http://localhost:9002/doc.html 就可以看见 Knife4j 的页面了,API 现在已经聚合上了

现在切换到 System 服务的 API 文档页面:

调试 API
调试一下 Auth 服务的 API,可以看见是成功的:

再调试 System 服务 API,也是成功的:

启动时打印 URL
为了方便,我们可以在启动类做一些修改,启动的时候打印 URL,需要的时候直接点击就可以了:

在日志中输出 URL:

@SpringBootApplication
@Slf4j
@EnableDiscoveryClient
publicclass GatewayApplication {public static void main(String[] args) {ConfigurableApplicationContext run= SpringApplication.run(GatewayApplication.class, args);Environment env= run.getEnvironment();log.info("""\s-------------------------------------------------Application is running! Access URLs:Local:    http://localhost:{}Doc:      http://localhost:{}/doc.html-------------------------------------------------\s""",env.getProperty("server.port"),env.getProperty("server.port"));}
}

效果如此:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/908872.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户说:10分钟用通义灵码搞定“今天穿什么”!打开爽文世界……

当我仅用10分钟调教出一个会关心我穿不穿秋裤的管家时,突然想到,现在限制我们开发的已经不是编程能力,而在于你有没有把你的想象力塞进代码框!作者:ZLJ,浙江大学教育技术学研究生 当我仅用10分钟调教出一个会关心我穿不穿秋裤的管家时,突然想到,现在限制我们开发的已经…

Cyber Apocalypse 2025 forensics WP

Cyber Apocalypse 2025 forensics WPCyber Apocalypse 2025 WP 做了国际赛之后虽然(目前只做了两道,可是没环境了啊,前几天比赛有点多~www),只从取证这边说,感觉他们的题很有趣,情境也给的很真实连贯,出题灵活,就是能见到很多新兴的知识,拓展知识面,以后会多看一看…

python第六周作业(第四章课后程序练习题)

4.1 import random def guess_number(): target = random.randint(1, 100) count = 0 while True:guess = int(input("请输入你猜的数字(1-100): "))count += 1if guess < target:print("猜小了")elif guess > target:print("猜大了")else…

win安装oracle19c没有listener

然后就可以看到启动了本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/18803159

《HarmonyOS Next开发进阶:打造功能完备的Todo应用华章》

章节 6:日期选择器与日期处理目标学习如何使用DatePicker组件。 理解日期格式化和日期计算。内容日期选择器基础使用DatePicker组件。 处理日期选择事件。日期格式化格式化日期为友好的文本。日期计算判断日期是否过期或即将到期。代码示例 @Entry @Component struct DatePick…

MarkDwon语法

MarkDown语法 1、标题用法 一级标题:#+空格+内容+回车 二级标题:##+空格+内容+回车 三级标题:###+空格+内容+回车 四级标题:####+空格+内容+回车 2、字体用法 粗体使用:快捷键ctrl+b或者内容两边加两个星号,示例 斜体使用:内容两边加一个星号,示例 斜体加粗:内容两边加…

图论(连通分量)

AT_abc284_c [ABC284C] Count Connected Components 题目描述 頂点に $ 1 $ から $ N $ の番号が、辺に $ 1 $ から $ M $ の番号がついた $ N $ 頂点 $ M $ 辺の単純無向グラフが与えられます。辺 $ i $ は頂点 $ u_i $ と頂点 $ v_i $ を結んでいます。 グラフに含まれる連結…

业务系统基础框架-Winform版-角色

角色列表,可刷新,可展开,可折叠编辑角色为角色权限为角色分配菜单查看拥有此角色的账号

3.31 学习记录

实现了使用springboot从文件中读取数据显示在前端

记一次GC导致线上服务超时问题

1、现象2024-12-28 23点左右,线上其他服务请求 content-cache 出现批量超时。content-cache-03 机器内存使用率如下:机器配置:4核8G这里因为JVM参数设置为:-Xms4g -Xmx4g -XX:MaxNewSize=1g所以达到42%时,内存的使用率已经达到了3.3G。 2、数据查看GC日志如下: (1)CMS老…

No.1 可视化大屏--vite+vue3项目环境搭建

一、DataV-Vue3 1.1 安装 官网:https://datav-vue3.netlify.app/Guide/Guide.htmlnpm install @kjgl77/datav-vue3 一、vite3构建Vue3项目 1.1 什么是Vite 1.2创建vite3项目 第一步:新建一个项目的文件夹第二步:输入cmd,回车 第三步: npm init vite 第四步:输入项目名称…

SvelteKit 最新中文文档教程(16)—— Service workers

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…