当前位置: 首页 > article >正文

GuLi商城-SpringCloud-Gateway网关核心概念、测试API网关

网关作为流量的入口,功能包括路由转发、权限校验、限流控制等

  • Route(路由):包含独一无二的路由id、目的地的URL、断言集合、过滤器集合,断言用来判断

  • 路由是否能到达目的地URL

  • Predicats(断言):用来判断路由是否能到达目的地URL

  • Filter(过滤器):在请求访问成功之前、响应成功之后,都能进行修改


1、注册“gulimall-gateway”到Nacos

1)创建gulimall-gateway微服务

引入common依赖,common里面有 

2)添加“gulimall-common”依赖和“spring-cloud-starter-gateway”依赖,上图所示

<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

3)GulimallGatewayApplication类上加上@EnableDiscoveryClient注解 

4)在Nacos中创建“gateway”命名空间,同时在该命名空间中创建gulimall-gateway.yml”

我这里没有这么做,我还是用dev作为命名空间,在dev下创建gulimall-gateway

5)创建“bootstrap.properties”文件,添加如下配置,指明配置中心地址和所属命名空间

6)创建“application.properties”文件,指定服务名和注册中心地址

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

7)启动“gulimall-gateway”

启动报错:

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

因为我们在common模块里配置了mybatis相关的依赖,所以默认spring会扫描我们的数据库配置,

为了防止找不到数据库配置报错,我们要排除掉数据库配置

解决方法:在GulimallGatewayApplication中排除和数据源相关的配置 

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

重新启动网关微服务:

访问Nacos,查看到该服务已经注册到了Nacos中


过程中出现的问题记录: 

解决办法:增加依赖

<dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>


发现网关服务注册到nacos,是在public的命名空间中,不是我们希望的dev中

解决办法:


2、案例,测试网关的路由功能:

配置路由规则

修改层级:

测试:

http://localhost:88/?uri=baidu

 

http://localhost:88/?uri=qq 

参考:

gulimall-learning/谷粒商城—分布式基础.md at master · OYCodeSite/gulimall-learning · GitHub

spring-cloud-gateway官网:https://spring.io/projects/spring-cloud-gateway

spring-cloud-gateway文档:https://docs.spring.io/spring-cloud-

gateway/docs/current/reference/html/

spring-cloud 中文网:https://www.springcloud.cc/

原文链接:https://blog.csdn.net/qq_51998352/article/details/121916920

https://blog.csdn.net/qq_52476654/category_11866407.html


http://www.kler.cn/a/8001.html

相关文章:

  • nginx-nginx的缓存集成
  • Oracle 数据库执行计划的查看与分析技巧
  • 线性直流电流
  • FFmpeg 的常用API
  • Apache Commons Pool2—Java对象池的利器
  • WebRTC 环境搭建
  • 探索三维世界:从Hello World开始的Three.js入门之旅
  • 硬件语言Verilog HDL牛客刷题day07 计数器与存储器部分
  • 亚马逊美国站严查磁体产品?亚马逊最新政策公布
  • 67页新型智慧城市整体规划建设方案
  • Thinkphp 6.0模版的循环标签
  • ToBeWritten之反入侵安全技术面经总结
  • JSON 数据解析的3种方式
  • 2022国赛24:linux基础配置和本地源创建
  • Transformer中的注意力机制及代码
  • 动态规划之线性DP
  • 基于凸集上投影(POCS)的聚类算法
  • Pycharm用ssh连接GCP以后,可以项目都放在本地,只是调用GCP的计算资源吗?
  • Vue+springboot+java学生成绩动态追踪系统课程资源课件下载设计与实现
  • 【Python】【进阶篇】三、Python爬虫的构建User-Agnet代理池
  • itext使用缺陷?
  • Linux下的shell编程(必须给予执行权限)
  • ChatGPT帮我和老板吵架,半分钟做了个思维导图...
  • jackson、fastjson、kryo、protobuf等序列化效率对比【全】
  • ospf综合实验
  • 【Spring Boot】自定义 Banner