网关(Gateway)- 内置过滤器工厂

官方文档:Spring Cloud Gateway

内置过滤器工厂

AddRequestHeaderGatewayFilterFactory

为请求添加Header Header的名称及值

配置说明

java 复制代码
server:
  port: 8088
spring:
  application:
    name: api-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8847
        username: nacos
        password: nacos
    gateway:
      routes:
        - id: order_route # 路由唯一标识
          #uri: http://localhost:8020 # 需要转发的地址
          uri: lb://order-service # 需要转发的地址
          # 断言规则  用于路由规则的匹配
          predicates:
#            - Path=/order-serv/**
#            - After=2024-01-01T23:00:11.518+08:00[Asia/Shanghai]
#            - Before=2025-01-01T23:00:11.518+08:00[Asia/Shanghai]
            - Between=2024-01-01T23:00:11.518+08:00[Asia/Shanghai],2025-01-01T23:00:11.518+08:00[Asia/Shanghai]
#            - Header=X-Request-Id,\d+
#            - Host=127.0.0.1
#            - Query=name,lq
#            - Method=GET,POST
            # http://localhost:8088/order-serv/order/add  => http://localhost:8020/order-serv/order/add
            - Demo=YES
          #配置过滤器工厂
          filters:
            - StripPrefix=1 # 转发去掉第一层路径
            - AddRequestHeader=X-Request-name,tom #添加请求头
            # http://localhost:8020/order-serv/order/add => http://localhost:8020/order/add

代码编写

java 复制代码
package com.learning.springcloud.gateway.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
@Slf4j
@RequestMapping("/gateway")
public class GatewayController {


  @GetMapping("/test")
  public String testGateway(HttpServletRequest request) throws Exception { 
    return "success => gateWay-test 获取请求头X-Request-name:" + request.getHeader("X-Request-name");
  }

  @GetMapping("/test2")
  public String testGateway(@RequestHeader("X-Request-name") String name) throws Exception {
    return "success => gateWay-test2 获取请求头X-Request-name:" + name;
  }

}

访问效果

AddRequestParameterGatewayFilterFactory

为请求添加参数的名称及值

配置说明

java 复制代码
 filters:
    - StripPrefix=1 # 转发去掉第一层路径
    - AddRequestHeader=X-Request-name,tom #添加请求头
    - AddRequestParameter=color, blue # 添加请求参数

代码编写

java 复制代码
    @GetMapping("/test3")
    public String testGateway3(@RequestParam("color") String color) throws Exception {
        log.info("gateWay-get 获取请求参数color:" + color);
        return "success => gateWay-get 获取请求参数color:" + color;
    }

访问效果

PrefixPathGatewayFilterFactory

增加项目路径的过滤器

配置说明

java 复制代码
# order-service 服务配置
server:
  port: 8020
  servlet:
    context-path: /demo

# 网关配置
  filters:
    - StripPrefix=1 # 转发去掉第一层路径
    - AddRequestHeader=X-Request-name,tom #添加请求头
    - AddRequestParameter=color, blue # 添加请求参数
    - PrefixPath=/demo

访问效果

  • 不携带 配置的项目路径 demo 是无法访问的
  • 携带配置的项目路径demo是可以访问的
  • 通过网关访问不携带项目路径demo 可以正常访问

RedirectToGatewayFilterFactory

重定向过滤器,两个参数:HTTP状态码 和 重定向的目标地址

配置说明

java 复制代码
      #配置过滤器工厂
      filters:
        - StripPrefix=1 # 转发去掉第一层路径
        - AddRequestHeader=X-Request-name,tom #添加请求头
        - AddRequestParameter=color, blue # 添加请求参数
        - PrefixPath=/demo
        - RedirectTo=302, https://www.baidu.com/ #重定向到百度

访问效果

相关推荐
Raas1002 天前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
Raas1002 天前
AI网关怎么部署?MAI Gateway部署实操教程
人工智能·开源·gateway·mai gateway·企业级ai产品
Raas1003 天前
MAI Gateway实战部署:AI网关怎么部署?从0到1上手指南
人工智能·gateway·ai网关·企业级ai网关·企业级产品·ai技术交流
4SAPI4 天前
会议智能处理大模型 API 生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
人工智能·架构·自动化·gateway·php
JJJennie7774 天前
MAI Gateway实战部署:大模型网关部署方案?从0到1上手指南
数据库·人工智能·gateway·ai网关
Raas1005 天前
AI网关用开源够用吗?MAI Gateway入选2026年企业级AI网关推荐清单
人工智能·开源·gateway·ai网关·mai gateway·企业级ai网关·企业级产品
Raas1005 天前
MAI Gateway(魔芋企业级AI网关)选购攻略:AI网关厂商排名?避坑指南与对比
大数据·人工智能·网关·gateway·mai gateway·企业级产品
JJJennie7775 天前
大模型网关部署方案?MAI Gateway从部署到上线全流程
人工智能·gateway·ai网关
JJJennie7776 天前
MAI Gateway私有化部署全攻略:大模型网关怎么部署?附架构图
开源·gateway·ai网关