目录
- gateway是什么?
- 特点
- 词汇表
- gateway是如何工作的呢?
- 路由谓词工厂
- GatewayFilter工厂
-
- -AddRequestHeader
- -AddRequestParameter
- -AddResponseHeader
- -DedupeResponseHeader
- - Hystrix
- - CircuitBreaker
- - RewritePath
- FallbackHeaders
- - MapRequestHeader
- - PrefixPath=/mypath
- - PreserveHostHeader
- - RedirectTo=302, https://acme.org
- - RemoveRequestHeader=X-Request-Foo
- - RemoveResponseHeader=X-Response-Foo
- - RemoveRequestParameter=red
- - RewritePath=/red(?/?.*), $\{segment}
- - RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,
- - RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***
- - SaveSession
- - SetPath=/{segment}
- - SetRequestHeader=foo, bar-{segment}
- - SetResponseHeader=foo, bar-{segment}
- - SetStatus=401
- - StripPrefix=2
- - name: RequestSize
- - name: SetRequestHostHeader
- 个人实践
- 总结
gateway是什么?
该项目提供了一个库,用于在 Spring WebFlux 之上构建 API 网关。Spring Cloud Gateway 旨在提供一种简单而有效的方式来路由到 API,并为它们提供横切关注点,例如:安全性、监控/指标和弹性。
特点
- 基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.0 构建。
- 能够匹配任何请求属性的路由。
- 谓词和过滤器特定于路由。
- 断路器集成。
- Spring Cloud Discovery客户端集成。
- 易于编写谓词和过滤器。
- 请求速率限制。
- 路径重写。
词汇表
Route:网关的基本构建块。它由 ID、目标 URI、谓词集合和过滤器集合定义。如果聚合谓词为真,则匹配路由。
谓词:这是一个Java 8 函数谓词。输入类型是Spring FrameworkServerWebExchange。这使您可以匹配来自 HTTP 请求的任何内容,例如标头或参数。
过滤器GatewayFilter:这些是使用特定工厂构建的实例。在这里,您可以在发送下游请求之前或之后修改请求和响应。
gateway是如何工作的呢?
- Gateway 接收客户端请求。
- 请求与 Predicate 进行匹配,获得到对应的 Route。匹配成功后,才能继续往下执行。
- 请求经过 Filter 过滤器链,执行前置(prev)处理逻辑。例如说,修改请求头信息等。
- 请求被 Proxy Filter 转发至目标 URI,并最终获得响应。一般来说,目标 URI 是被代理的微服务,如果是在 Spring Cloud 架构中。
- 响应经过 Filter 过滤器链,执行后置(post)处理逻辑。
- Gateway 返回响应给客户端。
路由谓词工厂
after_route
before_route
between_route
cookie_route
header_route
host_route
method_route
path_route
spring:
cloud:
gateway:
routes:
- id: path_route
uri: https://example.org
predicates:
- Path=/red/{
segment},/blue/{
segment}