当前位置: 首页 > 知识库问答 >
问题:

春云网关拒绝查询参数

柳经纶
2023-03-14

我开始设置一个Spring Cloud Gateway,它在uri中没有查询参数的情况下工作得很好。但是我需要一些参数,它们不是固定的,我不使用它们来选择路由,我只需要它们和uri一起发送,没有任何改变。

例如,网址:

http://localhost:8080/dev/select config/v1/ABCDE

可以工作,但对于查询参数,它不会:

http://localhost:8080/dev/selectconfig/v1/ABCDE?config={"高度": 22,"宽度": 30}

我收到 400 错误请求。我想重定向到网址:

https://somehosthere.com/dev/selectconfig/v1/ABCDE?config={ "高度":22,"宽度":30}

spring:
  cloud:
    gateway:
      routes:
      - id: route1
        uri: https://somehosthere.com/
        predicates:
        - Path=/dev/selectconfig/**
        filters:
        - AddRequestHeader=SOMEKEY, ${SOMEKEY}                  
<?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.1</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.company</groupId>
    <artifactId>gw</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gw</name>
    <description>Gateway application</description>
    <properties>
        <java.version>17</java.version>
        <spring-cloud.version>2021.0.3</spring-cloud.version>
        <io.jsonwebtoken.version>0.11.5</io.jsonwebtoken.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>${io.jsonwebtoken.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>${io.jsonwebtoken.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-orgjson</artifactId>
            <version>${io.jsonwebtoken.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>       
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>    

</project>

共有1个答案

柴宏阔
2023-03-14

请尝试此配置

spring:
  cloud:
    gateway:
      routes:
      - id: route1
        uri: https://somehosthere.com/
        predicates:
        - Path=/dev/selectconfig/**
        - Query=config
        filters:
        - AddRequestHeader=SOMEKEY, ${SOMEKEY}   

   

请注意查询谓词。如果要更好地控制查询参数值,可以添加正则表达式。有关更多详细信息,请参阅此链接

 类似资料:
  • 我不知道spring-cloud-gateway是否支持从领事注册中心读取路由,就像Zuul一样。 另外,我用--debug启动了这一行:

  • 我们有一个要求,我们正在消费来自一个主题的消息,然后发生了一些丰富,然后我们将消息发布到另一个主题。以下是事件 使用者 - 使用消息 扩充 - 扩充使用的消息 制作人 - 已发布 向其他主题发送的丰富消息 我正在使用Spring cloud kafka binder,一切正常。突然,我们观察到生产者正在向主题发送重复的消息,然后我们使生产者是幂等的。为了更好地控制,我们将autocommitOff

  • 问题内容: 我正在尝试通过经典的ASP记录集执行以下查询- 尽管我遇到了权限问题。所以我收到的错误是- Microsoft OLE DB提供程序的ODBC驱动程序错误‘80040e09’ [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]对对象“ A_Permission”,数据库“ HRWB_3_0”,架构“ dbo”的选择权限被拒绝。 在不更改权限设置

  • 问题内容: 好吧,我要为此疯狂。MySQL恰好适合这种SQL: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’COURSENAME)’附近使用正确的语法 我的调试代码显示了两个已填充的参数值。 问题答案: MySQL不支持命名参数占位符。您可以使用 只能 定位参数占位符。也就是说,占位符只是一个符号。 顺便说一下,这符合ANSI SQL的行为。像Oracle这样的R

  • 我正在使用Spring Cloud。我的Spring boot应用程序、、和中有四个服务。我尝试使用API Gateway调用和。当我从API Gateway调用My时,它可以正常工作,但不起作用。当我尝试获取时,我收到未找到错误。我是Spring Cloud的新人。这是我的代码。 下面是我的网址,最后一个网址是404 实体 学院控制员 应用程序. yml 学生管理员实体 应用程序. yml 应用