predicates:断言<br>
写法一
name:断言类型名<br>
args:断言匹配参数或规则<br>
自定义断言工厂
创建类,类名以RoutePredicateFactory结尾,并加上@Component注解,继承AbstractRoutePredicateFactory<XXXRoutePredicateFactory.Config><br>
重写apply方法,并在test方法中,返回true表示断言成功,false断言失败
通过重写shortcutFieldOrder方法,可以定义param和value的传值顺序
filters:过滤器<br>
路径处理类
- RewritePath=/api/(?<segment>.*), /$\{segment} # 将 `/api/xxx` 重写为 `/xxx<br>通过正则表达式重写请求路径,常用于路径映射或版本控制<br>
- StripPrefix=1 # 去除路径中的第一个层级(如 `/api/user` → `/user`)<br>截断请求路径的前缀,通常与路由前缀配合使用。
请求/响应头处理类
- AddRequestHeader=X-Request-Foo, Bar # 添加头 `X-Request-Foo: Bar`<br>向下游请求添加指定的请求头
- RemoveRequestHeader=Cookie # 删除 `Cookie` 头<br>删除请求中的指定头信息(如敏感头)
- AddResponseHeader=Access-Control-Allow-Origin, * # 允许跨域<br>向响应中添加指定头信息(如 CORS 配置)
安全与校验类
- RequestSize=5MB # 限制请求体不超过 5MB<br>限制请求体大小,防止超大请求压垮服务
重试与重定向类
- Retry=3, 503 # 失败时重试 3 次,仅对 503 状态生效<br>根据响应状态码或异常自动重试请求(如网络抖动场景)
- RedirectTo=302, https://example.com # 302 临时重定向<br>将请求重定向到指定 URL(如 HTTP 到 HTTPS)
其他实用过滤器
- SetPath=/new-path # 将路径强制设为 `/new-path`<br>直接替换请求路径(与 RewritePath 类似,但语法更简洁)
- SetStatus=401 # 强制返回 401 状态码<br>修改响应状态码(如统一错误码处理)
自定义过滤器
创建类,且类名必须以GatewayFilterFactory结尾,并添加注解@Component,以便加入spring容器
继承AbstractNameValueGatewayFilterFactory,并重写apply方法
在配置中添加过滤器配置:- OnceToken=参数名, 参数值(虽然是一个key-value,但是实际使用时,可以根据业务需要,任意配置,两者可以没有任何关系)<br>