Spring Cloud 执行器API是通过Actuator自定义控制器端点,他可以在网关已经启动的时候对网关的路径进行增删改操作。
gateway 端点允许和Spring Cloud 网关交互,但是必须需要公开端点;
使用Spring Cloud Gateway 需要注意的地方:
Spring Cloud Gateway是基于Spring Boot 2.x, Spring WebFlux和Project Reactor 构建的。因此,在使用Spring Cloud Gateway时,许多不熟悉的同步库(例如,Spring Data和Spring Security)和模式可能不适用。**
Spring Cloud Gateway需要Spring Boot和Spring Webflux提供的Netty运行时。它不能在传统的Servlet容器中或作为WAR构建。
一定要记住只有Spring Boot2.0才支持!!
公开网关端点
management:
endpoint:
gateway:
enabled: true
endpoints:
web:
exposure:
include: gateway
简单配置路由规则
spring:
cloud:
gateway:
routes:
- id: get_route
uri: http://localhost:8081
predicates:
- Method=GET
- id: post_route
uri: http://localhost:8083
predicates:
- Method=POST
get方式的请求转发到本地8081端口;
post的请求转发到本地8083端口;
yml格式要注意别写错了,这里推荐一个yml和properties进行转换的网站。
https://www.toyaml.com/index.html
通过执行器查看路由规则
通过GET
方式 请求/actuator/gateway/routes
进行检索
[
{
"route_id":"get_route",
"route_definition":{
"id":"get_route",
"predicates":[
{
"name":"Method",
"args":{
"_genkey_0":"GET"
}
}
],
"filters":[
],
"uri":"http://localhost:8081",
"metadata":{
},
"order":0
},
"order":0
},
{
"route_id":"post_route",
"route_definition":{
"id":"post_route",
"predicates":[
{
"name":"Method",
"args":{
"_genkey_0":"POST"
}
}
],
"filters":[
],
"uri":"http://localhost:8083",
"metadata":{
},
"order":0
},
"order":0
}
]
路径
类型
描述
route_id
String
路线编号。
route_object.predicate
Object
路由谓词。
route_object.filters
Array
GatewayFilter工厂使用的路由。
order
Number
路线顺序。
创建路由
POST 通过/gateway/routes/{id_route_to_create}
接口进行创建路由;
地址:/actuator/gateway/routes/first_route
例1:GET请求到本地8081端口
{
"id": "first_route",
"predicates": [{
"name": "Method",
"args": {"_genkey_0":"GET"}
}],
"uri": "http://localhost:8081",
"order": 0
}
所有get请求转发到http://localhost:8081这个地址上去;
删除路由规则
DELETE
方式请求/actuator/gateway/routes/{id_route_to_create}
,即如上的/actuator/gateway/routes/first_route
地址进行删除;
刷新路由缓存
路由规则创建和删除之后不会立即生效,需要刷新才可以生效;
POST请求/actuator/gateway/refresh
地址进行刷新,该请求返回200,但没有响应主体。
其他接口
ID
HTTP方法
描述
globalfilters
GET
显示应用于路由的全局过滤器列表。
routefilters
GET
显示应用于特定路由的GatewayFilter工厂列表。
refresh
POST
清除路由缓存。
routes
GET
显示网关中定义的路由列表。
routes/{id}
GET
显示有关特定路线的信息。
routes/{id}
POST
将新路由添加到网关。
routes/{id}
DELETE
从网关删除现有路由。