SpringBoot中引入了springcloud-gateway,路由不生效为什么?

今天闲来无事,想看看springcloud-gateway的,于是自开始搭建gateway但是,搭建完成后想验证,发现有问题总会报404,接下来详细说下操作过程,

1.首先创建2个springBoot的工程。一个作为gateway 一个可以作为路由的目标服务,今天我们只说gateway中的配置:

pom文件的配置:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.7.18</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<groupId>com.jihaixiang</groupId>

<artifactId>boot-mybatis</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>boot-mybatis</name>

<description>Demo project for Spring Boot+mybatis</description>

<properties>

<java.version>1.8</java.version>

</properties>

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-gateway</artifactId>

<version>3.1.9</version>

</dependency>

<!-- Spring Boot Web Starter -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-webflux</artifactId>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>
2.yml文件配置

spring:

application:

name: cloud-gateway

cloud:

gateway:

routes:

  • id: example_route222

uri: http://192.168.1.4:8092

predicates:

  • Path=/example/**

#filters:

#- StripPrefix=1

#filters:

- RewritePath=/example/(?<segment>.*), /$\{segment}

server:

port: 8091

其中http://192.168.1.4:8092是我的路由目标地址,如何在测试过程中发现并没有路由到http://192.168.1.4:8092,那一定是我们的访问的地址有问题,

比如:当我们http://192.168.1.4:8091/example/test的时候,最终路由到的地址是

http://192.168.1.4:8092/example/tes,那我们就首先要看我们8092的服务端是不是可以直接访问通。

但是如果你配置了 #filters:

#- StripPrefix=1 意味着,如果你访问地址为http://192.168.1.4:8092/example/tes,实际的访问地址就是http://192.168.1.4:8092/tes,因为StripPrefix=1是将example过滤掉了

相关推荐
汤姆yu1 小时前
基于springboot的尿毒症健康管理系统
java·spring boot·后端
暮色妖娆丶1 小时前
Spring 源码分析 单例 Bean 的创建过程
spring boot·后端·spring
biyezuopinvip2 小时前
基于Spring Boot的企业网盘的设计与实现(任务书)
java·spring boot·后端·vue·ssm·任务书·企业网盘的设计与实现
JavaGuide3 小时前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
figo10tf3 小时前
Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
java·spring boot·后端
zhangyi_viva3 小时前
Spring Boot(七):Swagger 接口文档
java·spring boot·后端
橙露4 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
程序员敲代码吗4 小时前
Spring Boot与Tomcat整合的内部机制与优化
spring boot·后端·tomcat
NuageL4 小时前
原始Json字符串转化为Java对象列表/把中文键名变成英文键名
java·spring boot·json
SoleMotive.4 小时前
谢飞机爆笑面经:Java大厂3轮12问真题拆解(Redis穿透/Kafka分区/MCP Agent)
redis·spring cloud·kafka·java面试·mcp