谷粒商城实战笔记-27-分布式组件-SpringCloud-Gateway-创建&测试API网关
创始人
2025-01-11 08:06:24
0

本节的主要内容是创建网关模块,将网关注册到Nacos,并配置路由进行测试。

一,创建网关模块

右键工程New->Module,创建新模块,模块名称 gulimall-gateway

在这里插入图片描述

填充各种信息。

在这里插入图片描述

选中Gateway依赖。

在这里插入图片描述
点击Create创建模块。

二,网关服务配置

1,依赖common模块

		             com.atguigu.gulimall             gulimall-common             0.0.1-SNAPSHOT          

因为网关服务也需要使用注册中心和配置中心,所以需要相关的包的依赖,通过依赖common模块得到。

2,启动服务发现

通过在启动类增加注解,让服务启动后注册到注册中心。

@EnableDiscoveryClient 

3,创建配置文件

在resources目录下新建三个配置文件。

① application.properties

配置Nacos注册中心相关信息。

server.port=80 spring.cloud.nacos.discovery.server-addr=localhost:8848 spring.application.name=gulimall-gateway 

② bootstrap.properties

配置Nacos配置中心的相关信息,注意,要事先在Nacos上创建一个名为gateway的命名空间,网关模块的所有配置文件都存放在这个命名空间下。

在这里插入图片描述

spring.application.name=gulimall-gateway spring.cloud.nacos.config.server-addr=localhost:8848 spring.cloud.nacos.config.namespace=405d2201-d62b-4203-80c8-800e9387ad40 

③ application.yml

这个文件中,编写网关路由配置,具体内容见下一部分。

三,网关路由配置

1,路由配置

这一部分,我们以两个实际的需求为例,练习如何配置网关。

网关的作用是根据网关配置的规则,将接收到的请求转发到相应的服务。

为了方便演示,假设有这样的需求,在浏览器输入如下url时,将请求转发到百度。

http://localhost/?url=baidu 

在浏览器输入如下url时,将请求转发到腾讯。

http://localhost/?url=qq 

该如何编写配置文件呢?

仓库Spring Cloud Gateway的官方文档,参考其格式。

因为我们需要根据url上的查询条件进行对应的转发,所以找到Gateway关于Query的断言配置文档。

在这里插入图片描述

参照这个文档进行配置。

application.yml

spring:   cloud:     gateway:       routes:         - id: baidu_test           uri: https://www.baidu.com           predicates:             - Query=url,baidu         - id: qq_test           uri: https://www.qq.com           predicates:             - Query=url,qq 

这里定义了两个路由规则,用于根据查询参数url的值来决定请求应该转发到哪个目标URI。

  • spring.cloud.gateway.routes: 这是Spring Cloud Gateway的路由配置列表。

  • 每个routes项定义了一个路由规则。

  • id: 每个路由规则需要一个唯一的ID,用于识别和管理路由。

  • uri: 当路由规则匹配时,请求将被转发到这个URI地址。这里的https://www.baidu.comhttps://www.qq.com分别指定了百度和腾讯网站的URL。

  • predicates: 这是路由规则的断言列表,用于确定是否应用此路由规则。断言是基于请求的元数据进行评估的表达式。

    • Query=url,baidu: 这个断言表示如果请求中包含名为url的查询参数,并且它的值等于baidu,那么这个路由规则会被触发,请求将被转发到https://www.baidu.com

    • Query=url,qq: 类似地,如果查询参数url的值为qq,则请求将被转发到https://www.qq.com

这样,当你的应用收到一个带有url=baiduurl=qq查询参数的请求时,Spring Cloud Gateway会根据上述规则将请求代理到相应的网站。

2,验证

在浏览器中访问如下地址。

http://localhost/?url=baidu 

在这里插入图片描述

有如上界面,说明网关服务配置和路由配置正常。

错误记录

在启动Gateway的过程中会报错。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2024-07-11 15:57:32.988 ERROR 27224 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   :   *************************** APPLICATION FAILED TO START ***************************  Description:  Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.  Reason: Failed to determine a suitable driver class 

在这里插入图片描述

原因是Gateway模块依赖common,common模块声明了对mybatis的依赖,mybatis的包会在启动时查找数据库相关的配置,而Gateway项目无需数据库,所以没有相关配置。

解决办法,告知网关模块在启动时无需查找数据库相关的配置,通过在启动类注解上声明排除相关的包依赖即可。

在这里插入图片描述

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) 

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...