REST Resource: projects.locations.httpRoutes

资源:HttpRoute

HttpRoute 是一项资源,用于定义应如何由 Mesh 或 Gateway 资源路由 HTTP 流量。

JSON 表示法
{
  "name": string,
  "selfLink": string,
  "description": string,
  "createTime": string,
  "updateTime": string,
  "hostnames": [
    string
  ],
  "meshes": [
    string
  ],
  "gateways": [
    string
  ],
  "labels": {
    string: string,
    ...
  },
  "rules": [
    {
      object (RouteRule)
    }
  ]
}
字段
name

string

必需。HttpRoute 资源的名称。它匹配 projects/*/locations/global/httpRoutes/http_route_name> 格式。

description

string

可选。资源的自由文本说明。长度上限为 1024 个字符。

createTime

string (Timestamp format)

仅限输出。创建资源时的时间戳。

时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

updateTime

string (Timestamp format)

仅限输出。更新资源时的时间戳。

时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z"

hostnames[]

string

必需。主机名定义了一组主机,这些主机应与 HTTP 主机标头匹配,以选择用于处理请求的 HttpRoute。主机名是网络主机的完全限定域名,如 RFC 1123 所定义,但有一个例外: - 不允许使用 IP。- 主机名可以带有通配符标签 (*.) 前缀。通配符标签必须单独作为第一个标签显示。

主机名可以是“精确”即不含网络主机终止点的域名(例如 foo.example.com),或“通配符”(以单个通配符标签为前缀的域名,例如 *.example.com)。

请注意,根据 RFC1035 和 RFC1123,标签必须由小写字母数字字符或“-”组成,并以字母数字字符开头和结尾。不允许使用其他标点符号。

与网状网络或网关关联的路由必须具有唯一的主机名。如果您尝试附加具有冲突主机名的多个路线,系统会拒绝相应配置。

例如,虽然主机名 *.foo.bar.com*.bar.com 的路由可以与同一网状网络(或同一范围内的网关)相关联,但不能将这两个路由都与 *.bar.combar.com 相关联。

meshes[]

string

可选。“Meshes”定义了此 HttpRoute 附加到的网格列表,作为路由网格提供的请求的路由规则之一。

每个网格引用都应与以下模式匹配:projects/*/locations/global/meshes/<mesh_name>

附加的网格的类型应为 SIDECAR

gateways[]

string

可选。Gateways 定义了此 HttpRoute 附加到的网关列表,作为路由网关所处理请求的路由规则之一。

每个网关引用都应与以下模式匹配:projects/*/locations/global/gateways/<gateway_name>

labels

map (key: string, value: string)

可选。与 HttpRoute 资源关联的一组标签标记。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

rules[]

object (RouteRule)

必需。用于定义流量的路由和处理方式的规则。系统会根据为规则指定的 RouteMatch 依序匹配规则。

RouteRule

指定如何匹配流量,以及在流量匹配时如何路由流量。

JSON 表示法
{
  "matches": [
    {
      object (RouteMatch)
    }
  ],
  "action": {
    object (RouteAction)
  }
}
字段
matches[]

object (RouteMatch)

匹配项列表定义了用于将规则与传入 HTTP 请求匹配的条件。每项匹配都是独立的,也就是说,只要满足其中任一匹配条件,系统就会匹配此规则。

如果未指定任何匹配字段,此规则将无条件匹配流量。

如果您想配置默认规则,请在规则列表的末尾添加一个未指定任何匹配项的规则。

action

object (RouteAction)

定义如何路由匹配流量的详细规则。

RouteMatch

RouteMatch 定义了用于匹配请求的规范。如果设置了多种匹配类型,则只要所有类型的匹配都匹配,此 RouteMatch 就会匹配。

JSON 表示法
{
  "ignoreCase": boolean,
  "headers": [
    {
      object (HeaderMatch)
    }
  ],
  "queryParameters": [
    {
      object (QueryParameterMatch)
    }
  ],

  // Union field PathMatch can be only one of the following:
  "fullPathMatch": string,
  "prefixMatch": string,
  "regexMatch": string
  // End of list of possible types for union field PathMatch.
}
字段
ignoreCase

boolean

指定 prefixMatch 和 fullPathMatch 匹配项是否区分大小写。默认值为 false。

headers[]

object (HeaderMatch)

指定要匹配的 HTTP 请求标头列表。必须匹配所提供的所有标头。

queryParameters[]

object (QueryParameterMatch)

指定要匹配的查询参数列表。所有查询参数都必须匹配。

联合字段 PathMatch

PathMatch 只能是下列其中一项:

fullPathMatch

string

HTTP 请求路径值应与此值完全匹配。

只能使用 fullPathMatch、prefixMatch 和 regexMatch 之一。

prefixMatch

string

HTTP 请求路径值必须以指定的 prefixMatch 开头。prefixMatch 必须以 / 开头。

请仅使用 fullPathMatch、prefixMatch 或 regexMatch 之一。

regexMatch

string

移除原始网址提供的所有查询参数和锚点后,HTTP 请求路径值必须满足 regexMatch 指定的正则表达式。如需了解正则表达式语法,请参阅 https://github.com/google/re2/wiki/Syntax

只能使用 fullPathMatch、prefixMatch 和 regexMatch 之一。

HeaderMatch

指定如何根据 HTTP 请求标头选择路由规则。

JSON 表示法
{
  "header": string,
  "invertMatch": boolean,

  // Union field MatchType can be only one of the following:
  "exactMatch": string,
  "regexMatch": string,
  "prefixMatch": string,
  "presentMatch": boolean,
  "suffixMatch": string,
  "rangeMatch": {
    object (IntegerRange)
  }
  // End of list of possible types for union field MatchType.
}
字段
header

string

要匹配的 HTTP 标头的名称。

invertMatch

boolean

如果指定,系统会在检查之前反转匹配结果。默认值为 false。

联合字段 MatchType

MatchType 只能是下列其中一项:

exactMatch

string

标头的值应与 exactMatch 的内容完全匹配。

regexMatch

string

标头的值必须与 regexMatch 中指定的正则表达式匹配。如需了解正则表达式语法,请参阅:https://github.com/google/re2/wiki/Syntax

prefixMatch

string

标头的值必须以 prefixMatch 的内容开头。

presentMatch

boolean

必须存在具有 headerName 的标头。无论标头是否有值,都会进行匹配。

suffixMatch

string

标头的值必须以 suffixMatch 的内容结尾。

rangeMatch

object (IntegerRange)

指定后,如果请求标头值在范围内,规则将匹配。

IntegerRange

表示整数值范围。

JSON 表示法
{
  "start": integer,
  "end": integer
}
字段
start

integer

范围的起始值(含边界值)

end

integer

范围的结束值(不含)

QueryParameterMatch

用于匹配请求中的查询参数的规范。

JSON 表示法
{
  "queryParameter": string,

  // Union field MatchType can be only one of the following:
  "exactMatch": string,
  "regexMatch": string,
  "presentMatch": boolean
  // End of list of possible types for union field MatchType.
}
字段
queryParameter

string

要匹配的查询参数的名称。

联合字段 MatchType

MatchType 只能是下列其中一项:

exactMatch

string

查询参数的值必须与 exactMatch 的内容完全匹配。

只能设置完全匹配、regexMatch 和 presentMatch 中的一项。

regexMatch

string

查询参数的值必须与 regexMatch 指定的正则表达式匹配。如需了解正则表达式语法,请参阅 https://github.com/google/re2/wiki/Syntax

只能设置完全匹配、regexMatch 和 presentMatch 中的一项。

presentMatch

boolean

指定在请求包含查询参数时,无论是否具有值, Query 参数 Matcher 都会匹配。

必须仅设置 exactMatch、regexMatch 或 presentMatch 之一。

RouteAction

用于路由流量和应用关联政策的规范。

JSON 表示法
{
  "destinations": [
    {
      object (Destination)
    }
  ],
  "redirect": {
    object (Redirect)
  },
  "faultInjectionPolicy": {
    object (FaultInjectionPolicy)
  },
  "requestHeaderModifier": {
    object (HeaderModifier)
  },
  "responseHeaderModifier": {
    object (HeaderModifier)
  },
  "urlRewrite": {
    object (URLRewrite)
  },
  "timeout": string,
  "retryPolicy": {
    object (RetryPolicy)
  },
  "requestMirrorPolicy": {
    object (RequestMirrorPolicy)
  },
  "corsPolicy": {
    object (CorsPolicy)
  },
  "statefulSessionAffinity": {
    object (StatefulSessionAffinityPolicy)
  },
  "directResponse": {
    object (HttpDirectResponse)
  },
  "idleTimeout": string
}
字段
destinations[]

object (Destination)

流量应转发到的目的地。

redirect

object (Redirect)

如果设置了此字段,则系统会根据此字段的配置来定向该请求。

faultInjectionPolicy

object (FaultInjectionPolicy)

用于向流量注入故障的规范,以测试客户端对后端服务故障的弹性。在故障注入过程中,当客户端向后端服务发送请求时,一定比例的请求可能会出现延迟,然后才会将这些请求发送到后端服务。同样,系统可能会针对一定比例的请求终止来自客户端的请求。

使用 faultInjectionPolicy 配置的客户端会忽略 timeout 和 retryPolicy

requestHeaderModifier

object (HeaderModifier)

在将请求传送到目标之前修改匹配请求标头的规范。如果在目的地和 RouteAction 上都设置了 HeaderModifier,则它们会合并。配置不会解决这两者之间的冲突。

responseHeaderModifier

object (HeaderModifier)

用于在将响应发回客户端之前修改响应标头的规范。如果在目的地和 RouteAction 上都设置了 HeaderModifier,则它们会合并。两者之间的冲突不会在配置中得到解决。

urlRewrite

object (URLRewrite)

在将请求转发到目标之前重写网址的规范。

timeout

string (Duration format)

指定所选路由的超时时间。超时的计算时间为:从请求已完全处理(即视频流结束)开始,直到响应完全处理为止。超时包括所有重试。

该时长以秒为单位,最多包含九个小数位,以“s”结尾。示例:"3.5s"

retryPolicy

object (RetryPolicy)

指定与此路线关联的重试政策。

requestMirrorPolicy

object (RequestMirrorPolicy)

此政策旨在指定如何将发往路由目的地的请求覆盖到单独的镜像目的地。代理不会等待影子目标页面响应,然后再返回响应。在将流量发送到影子服务之前,主机/权威标头会附加 -shadow 后缀。

corsPolicy

object (CorsPolicy)

允许客户端跨源请求的规范。

statefulSessionAffinity

object (StatefulSessionAffinityPolicy)

可选。指定基于 Cookie 的有状态会话亲和性。

directResponse

object (HttpDirectResponse)

可选。无论请求为何,要返回的静态 HTTP 响应对象。

idleTimeout

string (Duration format)

可选。指定选定路由的空闲超时时间。闲置超时是指上游或下游连接上没有发送或接收任何字节的时间段。如果未设置此政策,则默认的闲置超时时间为 1 小时。如果设为 0 秒,则会停用超时。

该时长以秒为单位,最多包含九个小数位,以“s”结尾。示例:"3.5s"

目标

指定请求应路由到的目标的规范。

JSON 表示法
{
  "serviceName": string,
  "weight": integer,
  "requestHeaderModifier": {
    object (HeaderModifier)
  },
  "responseHeaderModifier": {
    object (HeaderModifier)
  }
}
字段
serviceName

string

要将流量路由到的 BackendService 的网址。

weight

integer

指定转发到 serviceName 字段所引用的后端的请求比例。计算方式如下:- 权重/总和(此目的地列表中的权重)。对于非零值,此处定义的精确比例可能会有一些 Epsilon 值,具体取决于实现支持的精度。

如果仅指定一个 serviceName 且其权重大于 0,则系统会将 100% 的流量转发到该后端。

如果为任何一个服务名称指定了权重,则需要为所有服务名称都指定权重。

如果没有为所有服务指定权重,流量将按等比例分配给所有服务。

requestHeaderModifier

object (HeaderModifier)

可选。在将请求传送到目标之前修改匹配请求标头的规范。如果同时在 Destination 和 RouteAction 上设置了 HeaderModifier,它们会合并。两者之间的冲突不会在配置中得到解决。

responseHeaderModifier

object (HeaderModifier)

可选。用于在将响应发回客户端之前修改响应标头的规范。如果同时在 Destination 和 RouteAction 上设置了 HeaderModifier,它们会合并。配置不会解决这两者之间的冲突。

HeaderModifier

此规范用于修改 HTTP 请求和 HTTP 响应中的 HTTP 标头。

JSON 表示法
{
  "set": {
    string: string,
    ...
  },
  "add": {
    string: string,
    ...
  },
  "remove": [
    string
  ]
}
字段
set

map (key: string, value: string)

使用给定映射完全覆盖/替换标头,其中键是标头的名称,值是标头的值。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

add

map (key: string, value: string)

使用给定映射添加标头,其中键是标头的名称,值是标头的值。

包含一系列 "key": value 对的对象。示例:{ "name": "wrench", "mass": "1.3kg", "count": "3" }

remove[]

string

移除列表中指定的标头(按标头名称匹配)。

重定向

重定向流量的规范。

JSON 表示法
{
  "hostRedirect": string,
  "pathRedirect": string,
  "prefixRewrite": string,
  "responseCode": enum (ResponseCode),
  "httpsRedirect": boolean,
  "stripQuery": boolean,
  "portRedirect": integer
}
字段
hostRedirect

string

将在重定向响应中使用的主机,而不是请求中提供的主机。

pathRedirect

string

将在重定向响应中使用的路径,而不是请求中提供的路径。pathRedirect 不能与 prefixRedirect 一起提供。请单独提供其中一个,或都不提供。如果未提供这两者,系统将使用原始请求的路径进行重定向。

prefixRewrite

string

表示在重定向期间,匹配的前缀(或路径)应与此值交换。此选项允许根据请求动态创建网址。

responseCode

enum (ResponseCode)

要用于重定向的 HTTP 状态代码。

httpsRedirect

boolean

如果设置为 true,则重定向请求中的网址架构会设为 https。如果设置为 false,重定向请求的网址 scheme 将保持与请求的 scheme 相同。

默认值为 false。

stripQuery

boolean

如果设为 true,则会在重定向请求之前移除原始网址的任何相关查询部分。如果设为 false,系统会保留原始网址的查询部分。

默认值设为 false。

portRedirect

integer

将在重定向请求中使用的端口,而不是在请求中提供的端口。

ResponseCode

支持的 HTTP 响应代码。

枚举
RESPONSE_CODE_UNSPECIFIED 默认值
MOVED_PERMANENTLY_DEFAULT 对应于 301。
FOUND 对应于 302。
SEE_OTHER 对应于 303。
TEMPORARY_REDIRECT 对应于 307。在这种情况下,系统将保留请求方法。
PERMANENT_REDIRECT 对应于 308。在这种情况下,将保留请求方法。

FaultInjectionPolicy

用于向流量注入故障的规范,以测试客户端对目标服务故障的弹性。在故障注入过程中,当客户端向目标位置发送请求时,在将这些请求发送到目标服务之前,客户端代理可能会对一定比例的请求造成延迟。同样,客户端代理可以针对一定比例的请求中止请求。

JSON 表示法
{
  "delay": {
    object (Delay)
  },
  "abort": {
    object (Abort)
  }
}
字段
delay

object (Delay)

向客户端请求注入延迟的规范。

abort

object (Abort)

取消客户端请求的规范。

延迟

指定在将客户端请求发送到目标位置之前如何作为故障注入的一部分延迟客户端请求。

JSON 表示法
{
  "fixedDelay": string,
  "percentage": integer
}
字段
fixedDelay

string (Duration format)

在转发请求之前指定固定延迟时间。

该时长以秒为单位,最多包含九个小数位,以“s”结尾。示例:"3.5s"

percentage

integer

将注入延迟时间的流量百分比。

该值必须介于 [0, 100] 之间

取消

指定如何在将客户端请求发送到目标位置之前作为故障注入的一部分取消客户端请求。

JSON 表示法
{
  "httpStatus": integer,
  "percentage": integer
}
字段
httpStatus

integer

用于终止请求的 HTTP 状态代码。

该值必须介于 200 到 599 之间(包括这两个数值)。

percentage

integer

将取消的流量百分比。

值必须介于 [0, 100] 之间

URLRewrite

用于在将请求转发到目的地之前修改请求网址的规范。

JSON 表示法
{
  "pathPrefixRewrite": string,
  "hostRewrite": string
}
字段
pathPrefixRewrite

string

在将请求转发到所选目标位置之前,请求路径的匹配部分会替换为此值。

hostRewrite

string

在将请求转发到所选目标位置之前,请求主机标头会被替换为此值。

RetryPolicy

重试规范。

JSON 表示法
{
  "retryConditions": [
    string
  ],
  "numRetries": integer,
  "perTryTimeout": string
}
字段
retryConditions[]

string

指定应用此重试政策时的一个或多个条件。有效值:5xx:如果目标服务响应任何 5xx 响应代码,或者目标服务完全没有响应(例如:断开连接、重置、读取超时、连接失败和拒绝流式传输),代理将尝试重试。

Gateway 与 5xx 类似,但仅适用于响应代码 502、503、504。

重置:如果目标服务根本没有响应(断开连接/重置/读取超时),代理将重试

connect-failure:如果连接到目标位置失败(例如由于连接超时),代理将重试。

retriable-4xx:代理会针对可重试的 4xx 响应代码进行重试。目前,唯一支持的可重试错误是 409。

refused-stream:如果目标使用 REFUSED_STREAM 错误代码重置了流,代理将重试。此重置类型表示可以放心地重试。

numRetries

integer

指定允许的重试次数。此数字必须 >0.如果未指定,则默认为 1。

perTryTimeout

string (Duration format)

指定每次重试尝试的非零超时值。

该时长以秒为单位,最多包含九个小数位,以“s”结尾。示例:"3.5s"

RequestMirrorPolicy

指定有关如何将请求覆盖到单独的镜像目标服务的政策。代理不会等待影子服务的响应。在将流量发送到影子服务之前,主机/授权方标头需以 -shadow 作为后缀。

JSON 表示法
{
  "destination": {
    object (Destination)
  },
  "mirrorPercent": number
}
字段
destination

object (Destination)

请求将镜像到的目标。目的地的权重将被忽略。

mirrorPercent

number

可选。要镜像到所需目标位置的请求所占的百分比。

CorsPolicy

允许客户端跨源请求的规范。

JSON 表示法
{
  "allowOrigins": [
    string
  ],
  "allowOriginRegexes": [
    string
  ],
  "allowMethods": [
    string
  ],
  "allowHeaders": [
    string
  ],
  "exposeHeaders": [
    string
  ],
  "maxAge": string,
  "allowCredentials": boolean,
  "disabled": boolean
}
字段
allowOrigins[]

string

以列表形式指定允许执行 CORS 请求的来源列表。如果某个来源与 allowOrigins 或 allowOriginRegexes 中的某个项匹配,则该来源是允许的。

allowOriginRegexes[]

string

指定与允许的来源匹配的正则表达式模式。如需了解正则表达式语法,请参阅 https://github.com/google/re2/wiki/Syntax

allowMethods[]

string

指定 Access-Control-Allow-Methods 标头的内容。

allowHeaders[]

string

指定 Access-Control-Allow-Headers 标头的内容。

exposeHeaders[]

string

指定 Access-Control-Expose-Headers 标头的内容。

maxAge

string

指定预检请求的结果可以缓存多长时间(以秒为单位)。这将转换为 Access-Control-Max-Age 标头。

allowCredentials

boolean

为了响应预检请求,将此设置为 true 表示实际请求可以包含用户凭据。这将转换为 Access-Control-Allow-Credentials 标头。

默认值为 false。

disabled

boolean

如果为 true,则表示 CORS 政策已停用。默认值为 false,表示 CORS 政策已生效。

StatefulSessionAffinityPolicy

基于 Cookie 的有状态会话亲和性的规范,其中日期平面会提供一个名为“GSSA”的“会话 Cookie”,用于编码特定的目标主机,只要目标主机保持正常运行,包含该 Cookie 的每个请求都会被定向到该主机。

gRPC 无代理网格库或 Sidecar 代理将管理会话 Cookie,但客户端应用代码负责将 Cookie 从会话中的每个 RPC 复制到下一个 RPC。

JSON 表示法
{
  "cookieTtl": string
}
字段
cookieTtl

string (Duration format)

必需。数据平面生成的 Set-Cookie 标头的 Cookie TTL 值。Cookie 的生命周期可设置为介于 1 到 86400 秒(24 小时)之间的值(包括这两个数值)。

该时长以秒为单位,最多包含九个小数位,以“s”结尾。示例:"3.5s"

HttpDirectResponse

要返回的静态 HTTP 响应对象。

JSON 表示法
{
  "status": integer,

  // Union field HttpBody can be only one of the following:
  "stringBody": string,
  "bytesBody": string
  // End of list of possible types for union field HttpBody.
}
字段
status

integer

必需。作为 HTTP 响应的一部分返回的状态。必须是正整数。

联合字段 HttpBody。作为 HTTP 响应的一部分返回的正文。HttpBody 只能是下列其中一项:
stringBody

string

可选。响应正文(字符串)。正文长度上限为 1024 个字符。

bytesBody

string (bytes format)

可选。响应正文(以字节为单位)。正文大小上限为 4096B。

使用 base64 编码的字符串。

方法

create

在给定的项目和位置中创建新的 HttpRoute。

delete

删除单个 HttpRoute。

get

获取单个 HttpRoute 的详情。

getIamPolicy

获取资源的访问权限控制政策。

list

列出给定项目和位置中的 HttpRoute。

patch

更新单个 HttpRoute 的参数。

setIamPolicy

针对指定资源设置访问权限控制政策。

testIamPermissions

返回调用者对指定资源拥有的权限。