【spring系列】Spring Cloud Gateway Actuator

​ Spring Cloud 执行器API是通过Actuator自定义控制器端点,他可以在网关已经启动的时候对网关的路径进行增删改操作。

​ gateway 端点允许和Spring Cloud 网关交互,但是必须需要公开端点;

使用Spring Cloud Gateway 需要注意的地方:

​ Spring Cloud Gateway是基于Spring Boot 2.xSpring WebFluxProject 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 从网关删除现有路由。

猜你喜欢

转载自blog.csdn.net/qq_30285985/article/details/102995277