网关(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/ #重定向到百度

访问效果

相关推荐
滕州市燕猫虎计算机科技工作室个体工商户12 小时前
SpringCloud应用启动后自动shutdown的原因
springboot·springcloud·自动退出·自动shutdown
Raas10015 小时前
AI网关支持哪些模型?MAI Gateway(魔芋企业级AI网关)功能实测与最佳实践
大数据·人工智能·gateway·mai gateway·企业级产品
Raas10016 小时前
MAI Gateway(魔芋企业级AI网关)技术揭秘:AI网关支持DeepSeek吗?从原理到落地
大数据·人工智能·gateway·ai网关·mai gateway·魔芋·企业级产品
爱看老照片20 小时前
Spring Cloud 微服务安全防护策略实现指南
微服务·springcloud·security·防护性策略实现·防护性技术选型
jonyleek1 天前
企业级自动化实践:为什么确定性业务逻辑需要可视化能力编排而非AI生成代码
springcloud·低代码平台·流程引擎·java开发·企业自动化·逻辑编排·合规开发
Raas1001 天前
MAI Gateway(魔芋企业级AI网关)技术揭秘:AI网关支持哪些模型?从原理到落地
大数据·人工智能·网关·gateway·mai gateway·企业级产品
多云行者2 天前
什么是LLM Gateway?定义、技术栈与落地方式详解
网关·llm·gateway·api·传统
毅炼2 天前
Rover-Suite 开源发布:轻量服务注册中心与网关一体化方案
java·后端·系统架构·gateway
Raas1003 天前
AI网关核心功能?MAI Gateway(魔芋企业级AI网关)如何赋能企业AI能力
大数据·人工智能·gateway·mai gateway·企业级产品