121. Actuator API
/gateway
Actuator 端点允许监视 Spring Cloud Gateway 应用程序并与之交互。为了可远程访问,端点必须在应用程序属性中为enabled和通过 HTTP 或 JMX 公开。
application.properties.
management.endpoint.gateway.enabled=true # default value
management.endpoints.web.exposure.include=gateway
121.1 检索路由filter
121.1.1 全局filter
要检索应用于所有 Route 的global filters,请向/actuator/gateway/globalfilters
发出GET
请求。产生的响应类似于以下内容:
{
"or[emailprotected]77856cc5": 10100,
"o[emailprotected]4f6fd101": 10000,
"or[emailprotected]32d22650": -1,
"[emailprotected]6459d9": 2147483647,
"[emailprotected]5e0": 2147483647,
"[emailprotected]d23": 0,
"org.s[emailprotected]135064ea": 2147483637,
"[emailprotected]23c05889": 2147483646
}
该响应包含适当的全局filter的详细信息。为每个全局filter提供了filter对象(例如or[email protected]77856cc5
)和filter链中相应的order的字符串表示形式。
121.1.2 路由filter
要检索应用于 Route 的GatewayFilter factories,请向/actuator/gateway/routefilters
发出GET
请求。产生的响应类似于以下内容:
{
"[[emailprotected] configClass = AbstractNameValueGatewayFilterFactory.NameValueConfig]": null,
"[[emailprotected] configClass = Object]": null,
"[[emailprotected] configClass = Object]": null
}
该响应包含应用于任何特定路由的 GatewayFilter 工厂的详细信息。为每个工厂提供了对应对象(例如[[email protected] configClass = Object]
)的字符串表示形式。请注意,null
值是由于端点控制器的实现不完整而引起的,因为它试图设置对象在filter链中的 Sequences,而该 Sequences 不适用于 GatewayFilter 工厂对象。
121.2 刷新路由缓存
要清除 Route 缓存,请向/actuator/gateway/refresh
发出POST
请求。该请求返回 200,但没有响应正文。
121.3 检索网关中定义的路由
要检索网关中定义的路由,请向/actuator/gateway/routes
发出GET
请求。产生的响应类似于以下内容:
[{
"route_id": "first_route",
"route_object": {
"predicate": "org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory$$Lambda$432/[emailprotected]",
"filters": [
"OrderedGatewayFilter{delegate=org.springframework.cloud.gateway.filter.factory.PreserveHostHeaderGatewayFilterFactory$$Lambda$436/[emailprotected], order=0}"
]
},
"order": 0
},
{
"route_id": "second_route",
"route_object": {
"predicate": "org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory$$Lambda$432/[emailprotected]",
"filters": []
},
"order": 0
}]
该响应包含网关中定义的所有路由的详细信息。下表描述了响应的每个元素(即,Route)的结构。
Path | Type | Description |
---|---|---|
route_id | String | Route 编号。 |
route_object.predicate | Object | 路由谓词。 |
route_object.filters | Array | GatewayFilter factories应用于 Route。 |
order | Number | RouteSequences。 |
121.4 检索有关特定 Route 的信息
要检索有关一条 Route 的信息,请向/actuator/gateway/routes/{id}
发出GET
请求(例如/actuator/gateway/routes/first_route
)。产生的响应类似于以下内容:
{
"id": "first_route",
"predicates": [{
"name": "Path",
"args": {"_genkey_0":"/first"}
}],
"filters": [],
"uri": "http://www.uri-destination.org",
"order": 0
}]
下表描述了响应的结构。
Path | Type | Description |
---|---|---|
id | String | Route 编号。 |
predicates | Array | 路由谓词的集合。每个项目都定义给定谓词的名称和自变量。 |
filters | Array | 应用于 Route 的filter集合。 |
uri | String | 路由的目标 URI。 |
order | Number | RouteSequences。 |
121.5 创建和删除特定 Route
要创建路由,请使用 JSON 主体向/gateway/routes/{id_route_to_create}
发出POST
请求,该 JSON 主体指定了路由的字段(请参见上一小节)。
要删除 Route,请向/gateway/routes/{id_route_to_delete}
发出DELETE
请求。
121.6 概述:所有端点的列表
下表总结了 Spring Cloud GatewayActuator 端点。请注意,每个端点都有/actuator/gateway
作为基本路径。
ID | HTTP Method | Description |
---|---|---|
globalfilters | GET | 显示应用于路由的全局filter列表。 |
routefilters | GET | 显示应用于特定路由的 GatewayFilter 工厂列表。 |
refresh | POST | 清除路由缓存。 |
routes | GET | 显示网关中定义的路由列表。 |
routes/{id} | GET | 显示有关特定 Route 的信息。 |
routes/{id} | POST | 将新路由添加到网关。 |
routes/{id} | DELETE | 从网关删除现有路由。 |