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

news/2024/9/24 6:09:22/

官方文档:Spring Cloud Gateway

内置过滤器工厂

AddRequestHeaderGatewayFilterFactory

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

配置说明

server:port: 8088
spring:application:name: api-gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8847username: nacospassword: nacosgateway: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

代码编写

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

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

配置说明

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

代码编写 

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

访问效果

 PrefixPathGatewayFilterFactory

增加项目路径的过滤器

配置说明

# order-service 服务配置
server:port: 8020servlet:context-path: /demo# 网关配置filters:- StripPrefix=1 # 转发去掉第一层路径- AddRequestHeader=X-Request-name,tom #添加请求头- AddRequestParameter=color, blue # 添加请求参数- PrefixPath=/demo

访问效果 

  • 不携带 配置的项目路径 demo 是无法访问的

  • 携带配置的项目路径demo是可以访问的 

  •  通过网关访问不携带项目路径demo 可以正常访问

 RedirectToGatewayFilterFactory

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

配置说明

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

访问效果 


http://www.ppmy.cn/news/1466854.html

相关文章

【Python】使用flask作为web服务器

一、flash轻量级web框架介绍 Python Flask 框架是一个轻量级的 Web 框架,它简单易用,灵活多变,非常适合用于构建小型到中型规模的 Web 应用程序。以下是 Flask 框架的详细介绍: 1、基本概念 Flask 是一个基于 Python 的微型 We…

关于nginx的一些介绍

一、Nginx 简介 中文简介文档 二、Centos 安装 Nginx 2.1 安装编译工具及库文件 $ yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel2.2 安装 pcre pcre 作用是 Nginx 支持 Rewrite 功能 $ cd /usr/local/src $ wget http://downloads.sourcef…

安装Android Studio报错unable to access android sdk add-on list的解决方案

1. 安装报错 初次安装Android Studio时,提示报错如下: unable to access android sdk add-on lis2. 报错原因 安装Android Studio时,会在默认路径下检测是否有Android SDK,如果没有的话,就会报上述错误。 3. 解决方…

03-树2 List Leaves(浙大数据结构PTA习题)

03-树2 List Leaves 分数 25 全屏浏览 切换布局 作者 陈越 单位 浙江大学 Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. Input Specification: Each input file contains one test c…

探索Web前端三大主流框架:Angular、React和Vue.js

探索Web前端三大主流框架:Angular、React和Vue.js 在现代Web开发中,前端框架已经成为开发者构建复杂应用的重要工具。Angular、React和Vue.js是目前最受欢迎的三大前端框架,它们各具特色,适用于不同的开发需求。本文将详细介绍这…

在Three.js中实现模型点击高亮:整合EffectComposer与OutlinePass的终极指南

效果【后期实现鼠标点击选中轮廓后给出一个弹窗显示相应的模型信息】 标签指示线参考我的上一篇文章 引言 Three.js不仅让WebGL的3D图形编程变得简单易懂,还通过其强大的扩展库支持丰富的后期处理效果,为3D场景增添无限魅力。本篇文章将引导您深入了…

6月软考新通知:24下集成大概率是中级蕞简单的一门

2024下半年软考6月新通知: 一、24下软考考试时间安排: 24下半年软考报名时间:8月19日-9月15日 24下半年软考考试时间:11月9-12日 24下半年软考成绩查询:12月中(预计) 二、考情分析 24上软考…

Java18新特性

Java 18是Java编程语言的最新版本,其中引入了许多新的特性和改进。以下是Java 18的一些主要特性: 本地模式推断 Java 18引入了本地模式推断,这意味着在局部变量声明中可以使用关键字var来推断变量的类型。这样可以减少冗余代码,并…