流变量参考文档

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

本部分介绍了关于流变量的参考信息。

Apigee Edge 定义了以下流变量:

apigee              loadbalancing        router
apiproxy            message              servicecallout
application         messageid            system
client              organization         target
current             proxy                variable
environment         request              virtualhost
error               response
is                  route

后续部分介绍了各项变量。

apigee

一个辅助变量,可提供有关政策执行时间的信息。

下表介绍了 apigee 变量的属性:

媒体资源 类型 读写 说明 范围开始
apigee.metrics.policy.policy_name.timeTaken 整数 只读 政策开始执行的时间(以纳秒为单位)。 政策

apiproxy

描述 API 代理。

下表介绍了 apiproxy 变量的属性:

媒体资源 类型 读写 说明 范围开始
apiproxy.name 字符串 只读 API 代理的名称。例如,“我的代理”。 代理请求
apiproxy.revision 字符串 只读 API 代理的修订版本号。例如,“6”。 代理请求

如需详细了解如何使用 API 代理,请参阅了解 API 和 API 代理

application

application.basepath 属性的容器。

下表介绍了 application 变量的属性:

媒体资源 类型 读写 说明 范围开始
application.basepath 字符串 只读 部署基本路径(在 API 部署期间指定)。 代理请求

client

向 Edge 路由器发送请求的应用或系统。

下表介绍了 client 变量的属性:

媒体资源 类型 读写 说明 范围开始
client.cn 字符串 只读

客户端应用提供的 TLS/SSL 证书中指定的通用名称。

代理请求
client.country 字符串 只读

客户端应用提供的 TLS/SSL 证书中显示的国家/地区。

代理请求
client.email.address 字符串 只读

客户端应用提供的 TLS/SSL 证书中指定的电子邮件地址。

代理请求
client.host 字符串 只读

与 ProxyEndpoint 收到的请求相关的 HTTP 主机 IP。

代理请求
client.ip 字符串 只读

将消息发送到 Edge 路由器的客户端或系统的 IP 地址。例如,该属性可以是原始客户端 IP,也可以是负载平衡器 IP。

代理请求
client.locality 字符串 只读

客户端提供的 TLS/SSL 证书中显示的市行政区(城市)。

代理请求
client.organization 字符串 只读 客户端提供的 TLS/SSL 证书中显示的组织。(不一定与 Apigee Edge 中的组织一致。) 代理请求
client.organization.unit 字符串 只读

客户端提供的 TLS/SSL 证书中显示的组织单元。

代理请求
client.port 整数 只读

与向 ProxyEndpoint 发出原始客户端请求相关的 HTTP 端口。

代理请求
client.received.end.time 字符串 只读

代理在 ProxyEndpoint 完成从原始客户端接收请求的时间(以字符串形式表示)。例如:世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47。

此时间值是字符串表示形式,有相应的 32 位时间戳数量表示形式。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值 1377112607413。

代理请求
client.received.end.timestamp 只读

指定代理在 ProxyEndpoint 完成从原始客户端接收请求的时间戳值。此值是一个 64 位(长)整数,其中包含从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。

代理请求
client.received.start.time 字符串 只读

代理在 ProxyEndpoint 开始从原始客户端接收请求的时间(以字符串形式表示)。例如:世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47

此时间值是字符串表示形式,有相应的 32 位时间戳数量表示形式。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值 1377112607413。

代理请求
client.received.start.timestamp 只读

指定代理在 ProxyEndpoint 开始从原始客户端接收请求的时间戳值。此值是一个 64 位(长)整数,其中包含从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。

代理请求
client.scheme 字符串 只读

根据客户端应用用来发送请求消息的传输方式返回 http 或 https。

代理请求
client.sent.end.time 字符串 只读

代理完成从 ProxyEndpoint 向客户端发送响应的时间(以字符串形式表示)。例如:“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”。

此值是字符串表示形式,有相应的 32 位 client.sent.end.timestamp。例如,世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值 1377112607413。

PostClientFlow
client.sent.end.timestamp 只读 指定 ProxyEndpoint 完成向原始客户端应用返回响应的时间戳值。此值是一个 64 位(长)整数,其中包含从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。 PostClientFlow
client.sent.start.time 字符串 只读 ProxyEndpoint 开始向原始客户端应用发送响应的时间(以字符串形式表示)。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”。

此值是字符串表示形式,有相应的 32 位 client.sent.start.timestamp。例如,世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值 1377112607413。

PostClientFlow
client.sent.start.timestamp 只读 代理开始从 ProxyEndpoint 向客户端发送响应的时间。此值被表示为一个 64 位(长)整数,其中包含从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。 PostClientFlow
client.ssl.enabled 字符串 只读

如果 ProxyEndpoint 配置为用于 TLS/SSL,则为“true”;否则为“false”。

代理请求
client.state 字符串 只读

客户端提供的 TLS/SSL 证书中显示的状态。

代理请求

current

包含有关当前 API 代理流的信息。

下表介绍了 current 变量的属性:

媒体资源 类型 读写 说明 范围开始
current.flow.name 字符串 只读 当前正在执行的流的名称(例如“PreFlow”、“PostFlow”或条件流的名称)。 代理请求
current.flow.description 字符串 只读 当前正在执行的流的说明。这与流的 XML 配置中 <Description> 元素的值相同。 代理请求

您可以在 Edge 界面的 Trace 视图中查看这些属性。不过,默认情况下,经典版界面的 Trace 视图中不显示这些属性。

environment

environment.name 属性的容器。

下表介绍了 environment 变量的属性:

媒体资源 类型 读写 说明 范围开始
environment.name 字符串 只读 在其中运行事务的环境名称。 代理请求

error

用来表示错误流中错误消息的上下文对象。

下表介绍了 error 变量的属性:

媒体资源 类型 读写 说明 范围开始
error message 读写 message 类型错误,该错误是错误流中的上下文对象。 错误
error.content 字符串 读写 错误的内容。 错误
error.message 字符串 只读

与错误相关的消息,其值仅在执行错误流之前可用。

错误
error.status.code 整数 只读

与错误相关的 HTTP 状态代码。例如,“400”。

错误
error.reason.phrase 字符串 只读

与错误相关的原因短语。例如:“请求有误”。

错误
error.transport.message TransportMessage 只读

TransportMessage 类型的任何错误。

错误
error.state 整数 只读

出现错误的流中的状态。

错误
error.header.header_name 字符串 读写

获取或设置响应标头。

错误

fault

政策抛出错误时设置为运行时错误代码的流变量。错误代码值特定于各项政策。

媒体资源 类型 读写 说明 范围开始
fault.fault_name 字符串 只读 fault_name 是故障的名称,正如每个政策参考文档主题中都包含的运行时错误表中所述。 错误

is

is.error 属性的容器。

下表介绍了 is 变量的属性:

媒体资源 类型 读写 说明 范围开始
is.error 布尔值 只读

错误标记。

代理请求

loadbalancing

提供有关 TargetEndpoint 的负载均衡状态的信息。

下表介绍了 loadbalancing 变量的属性:

媒体资源 类型 读写 说明 范围开始
loadbalancing.failedservers 字符串数组 只读

在 TargetEndpoint 进行负载均衡期间失败的 TargetServer 列表。

目标响应
loadbalancing.isfallback 布尔值 只读

如果在 TargetEndpoint 进行负载平衡期间调用的 TargetServer 启用了回退功能,则为“true”。

目标响应
loadbalancing.targetserver 字符串 只读

在 TargetEndpoint 进行负载均衡期间调用的 TargetServer。只有在定义负载均衡器元素时设置了 <Path> 元素的情况下,才设置该项。

目标响应

message

一个上下文对象,其值与请求流中的 request 相同,或者与响应流中的 response 相同,又或者与错误流中的 error 相同。

下表介绍了 message 变量的属性:

媒体资源 类型 读写 说明 范围开始
message message 读写

一个上下文对象,其值与请求流中的 request 相同,或者与响应流中的 response 相同,又或者与错误流中的 error 相同。

代理请求
message.content 字符串 读写

请求、响应或错误消息的内容。

代理请求
message.formparam.param_name 字符串 读写

指定表单参数的值。

代理请求
message.formparam.param_name.
 values
集合 只读

消息中指定表单参数的所有值。

代理请求
message.formparam.param_name.
 values.count
整数 只读

消息中指定表单参数的值的计数。/p>

代理请求
message.formparams.count 整数 只读

消息中所有表单参数的计数。

代理请求
message.formparams.names 集合 只读

消息中所有表单参数的值。

代理请求
message.formstring 字符串 只读

消息中表单字符串的值。

代理请求
message.header.header_name 字符串 读写

获取或设置消息中指定 HTTP 标头的值。如果标头包含逗号,则在阅读时您只能接收截止到第一个逗号为止的文本片段。如果您需要完整的标头,请使用 request.header.header_name.
 values
格式

代理请求
message.header.header_name.N 字符串 读写

(请求或响应)消息中第 N 个特定标头的值,具体取决于流的状态。Apigee Edge 使用逗号分隔标头文本值。请注意,用于 N 的索引值从 1 开始,而不是从 0 开始。

例如:如果 Cache-control 标头为“public,maxage=16544”,则 message.header.cache-control.1 的返回值为“maxage=16544”。

代理请求
message.header.header_name.
 values
集合 只读

消息中指定 HTTP 标头名称的所有值。

代理请求
message.header.header_name.
 values.count
整数 只读

消息中指定 HTTP 标头名称的值的计数。

代理请求
message.headers.count 整数 只读

消息中所有 HTTP 标头的计数。

代理请求
message.headers.names 集合 只读

消息中所有 HTTP 标头的值

代理请求
message.path 字符串 读写

网址中完整的请求消息路径,不包括任何查询参数。

代理请求
message.queryparam.param_name 字符串 只读

返回指定的消息查询参数。

代理请求
message.queryparam.param_name.N 字符串 读写

消息中第 N 个查询参数的值。例如,如果 request.querystring 为“a=hello&a=world”,则 message.queryparam.a.1 的返回值为“hello”。

如需为单个查询参数名称(例如“type=siteid:1&type=language:us-en&type=currency:USD”)写入多个值,请设置以下内容:

  • message.queryparam.type.1 设置为“siteid:1”
  • message.queryparam.type.2 设置为“language:zh-cn”
  • message.queryparam.type.3 设置为“currency:USD”
代理请求
message.queryparam.param_name.
 values
集合 只读

消息中特定查询参数的所有值,采用逗号分隔列表格式。

例如,如果查询字符串为 a=hello&a=world,则 message.queryparam.a.values 的值为“['hello', 'world']”。

代理请求
message.queryparam.param_name.
 values.count
整数 只读

与从客户端应用发送到 ProxyEndpoint 的请求相关的指定查询参数的总计数。

代理请求
message.queryparams.count 整数 只读

与从客户端应用发送到 ProxyEndpoint 的请求相关的所有查询参数的总计数。

代理请求
message.queryparams.names 集合 只读

与从客户端应用发送到 ProxyEndpoint 的请求相关的所有查询参数列表。

要使用 JavaScript 迭代查询参数名称,请参阅以下 Apigee 社区帖子:如何在 JS 中迭代来自“request.queryparams.names”的集合?,您可在 Apigee 社区中找到该帖子。

代理请求
message.querystring 字符串 只读

包含与从客户端应用发送到 ProxyEndpoint 的请求相关的所有查询参数名称和值的字符串。

例如,对于请求“http://api.apifactory.com/inventors?name=nick&surname=danger”,message.querystring 的值为“name=nick&surname=danger”。

代理请求
message.reason.phrase 字符串 只读

来自目标的响应消息的原因短语。

目标响应
message.status.code 整数 只读

来自目标的响应消息的 HTTP 状态代码。

目标响应
message.transport.message TransportMessage 只读

TransportMessage 类型的消息,是一个上下文对象。

代理请求
message.uri 字符串 只读

包含查询参数的完整 URI 路径(位于网域网址后面)。

例如,对于请求“http://api.apifactory.com/inventors?name=nikola&surname=tesla”,此变量返回“inventors?name=nikola&surname=tesla”。

代理请求
message.verb 字符串 只读

与请求相关的 HTTP 动词(GETPUTPOSTDELETE 等)。

代理请求
message.version 字符串 读写

与从客户端应用发送到 ProxyEndpoint 的请求相关的 HTTP 版本。

代理请求

如需详细了解消息,请参阅消息模板函数参考文档

messageid

容纳请求的全局唯一 ID 的容器。

下表介绍了 messageid 变量的属性:

媒体资源 类型 读写 说明 范围开始
messageid 字符串 只读

保存请求的全局唯一 ID,其中包括路由器主机名。此 ID 允许在将路由器收到的请求发送到消息处理器后对其进行跟踪。

此 ID 记录在 Edge 错误日志中,用于将 messageid 与错误关联。

代理请求

organization

organization.name 属性的容器。

下表介绍了 organization 变量的属性:

媒体资源 类型 读写 说明 范围开始
organization.name 字符串 只读

组织名称。

代理请求

如需详细了解组织,请参阅了解组织

proxy

API 代理配置。

下表介绍了 proxy 变量的属性:

媒体资源 类型 读写 说明 范围开始
proxy.basepath 字符串 只读

API 代理配置中基本路径的值。基本路径是网址中位于主机后面的 URI 片段。条件流 URI 遵循基本路径。

在网址“http://myorg-test.apigee.net/v2/weatherapi/forecastrss?w=12797282”中:

  • 主机为“myorg-test.apigee.net”(包括组织名称和环境)
  • 基本路径为“/v2/weatherapi”

你知晓该路径的唯一方法是查看 API 代理定义或检查 proxy.basepath 变量的值。代理路径后缀遵循基本路径 ("/forecastrss") 和某个查询参数。

如果您在 API 代理配置中定义了动态基本路径(例如“/v2/*/weatherapi”),则此变量将设置为动态路径 (“/v2/*/weatherapi”),即使基本路径解析为静态值(例如“/v2/foo/weatherapi”)也一样。

代理请求
proxy.client.ip 字符串 只读

入站调用的 X-Forwarded-For 地址,即最后一次从外部 TCP 握手接收的 IP 地址 Edge。这可以是调用客户端,也可以是负载平衡器。

代理请求
proxy.name 字符串 只读

为 ProxyEndpoint 配置的名称属性。

代理请求
proxy.pathsuffix 字符串 只读

从客户端发送并在 ProxyEndpoint 接收的 API 代理基本路径后缀值。

基本路径定义为唯一标识 API 代理的路径组成部分。API 代理的公开网址由您的组织名称、部署代理的环境、基本路径、基本路径后缀,以及某个查询参数组成。

例如,在对 http://myorg-test.apigee.net/v2/weatherapi/forecastrss?w=12797282 的请求中,基本路径后缀为“/forecastrss”。

代理请求
proxy.url 字符串 只读

获取与 ProxyEndpoint 收到的代理请求相关联的完整网址,包括存在的任何查询参数。 如果使用 <LocalTargetConnection> 调用代理以执行代理链,网址的主机将始终为 localhost

如需查看使用原始主机构造 request 网址的示例,请参阅访问请求消息

代理请求

如需详细了解如何使用 API 代理,请参阅了解 API 和 API 代理

request

完整的请求,包括存在的任何载荷。

如需详细了解请求数据,请参阅如何将请求数据传递给后端服务器?

下表介绍了 request 变量的属性:

媒体资源 类型 读写 说明 范围开始
request message 只读

完整的请求,包括存在的任何载荷。

代理请求
request.content 字符串 读写

获取或设置请求消息的载荷。

代理请求
request.formparam.param_name 字符串 读写

获取或设置从客户端应用发送的请求中指定表单参数的值。

代理请求
request.formparam.param_name.
 values
集合 只读

请求中特定表单参数的所有值,采用逗号分隔列表格式。

例如,如果负载为“a=hello&x=greeting&a=world”,则 request.formparam.a.values 的值为“['hello', 'world']”。

代理请求
request.formparam.param_name.
 values.count
整数 只读

与请求相关的指定表单参数的所有值计数。

代理请求
request.formparam.param_name.N 字符串 读写

消息中第 N 个特定表单参数的值。例如,如果表单字符串为“a=hello&a=world”,则 request.formparam.a.1 的返回值为“hello”。

代理请求
request.formparams.count 整数 只读

与从客户端应用发送的请求相关的所有表单参数的计数。

代理请求
request.formparams.names 集合 只读

与请求相关的所有表单参数名称列表。

代理请求
request.formstring 字符串 只读

从客户端应用发出的请求中的完整 formparam

例如,“name=test&type=first&group=A”。

代理请求
request.header.header_name 字符串 读写

获取或设置在请求中找到的特定标头的值。如果标头包含逗号,则在阅读时您只能接收截止到第一个逗号为止的文本片段。

如果您需要完整的标头,请使用 request.header.header_name.values 格式。

代理请求
request.header.header_name.N 字符串 读写

请求中第 N 个特定标头值的值。Apigee Edge 使用逗号分隔标头文本值。请注意,用于 N 的索引值从 1 开始,而不是从 0 开始。

例如,如果 Cache-control 标头为“public, maxage=16544”,则 request.header.cache-control.1 的返回值为“maxage=16544”。

代理请求
request.header.header_name.
 values
集合 只读

请求中特定标头的所有值。

代理请求
request.header.header_name.
 values.count
整数 只读

请求中特定标头的所有值的计数。

代理请求
request.headers.count 整数 只读

请求中的所有标头的计数。

代理请求
request.headers.names 集合 只读

请求中所有标头的名称。

代理请求
request.path 字符串 只读

指向后端服务的非代理资源路径(不包括主机),不包括查询参数。

例如,后端服务的 URI 是“https://example.com/rest/api/latest”,则 request.path 的值为“/rest/api/latest”。

代理请求
request.queryparam.param_name 字符串 读写

在请求中找到的特定查询参数的值。

代理请求
request.queryparam.param_name.N 字符串 读写

请求中第 N 个查询参数的值。

例如,如果 request.querystring 为“a=hello&a=world”,则 request.queryparam.a.1 的返回值为“hello”。

如需为单个查询参数名称(例如“type=siteid:1&type=language:us-en&type=currency:USD”)写入多个值,请设置以下内容:

  • request.queryparam.type.1 设置为“siteid:1”
  • request.queryparam.type.2 设置为“language:zh-cn”
  • request.queryparam.type.3 设置为“currency:USD”
代理请求
request.queryparam.param_name.
 values
集合 只读

请求中特定查询参数的所有值,采用逗号分隔列表格式。

例如,如果 request.querystring 为“a=hello&b=lovely&a=world”,则 request.queryparam.a.values 的值为“['hello', 'world']”。

代理请求
request.queryparam.param_name.
 values.count
整数 只读

请求中特定查询参数的所有值的计数。

代理请求
request.queryparams.count 整数 只读

请求中所有查询参数的计数。

代理请求
request.queryparams.names 集合 只读

请求中所有查询参数的名称。

要使用 JavaScript 迭代查询参数名称,请在 Apigee 社区中查看如何在 JS 中迭代来自“request.queryparams.names”的集合?

代理请求
request.querystring 字符串 只读

从客户端应用发出的请求中的完整查询参数列表。

例如,如果请求为“http://host.com/123?name=first&surname=second&place=address”,则此变量返回“name=first&surname=second&place=address”。

代理请求
request.transportid 字符串 只读

TransportMessage 类型的请求 ID,该请求是一个上下文对象。

代理请求
request.transport.message Transport-Message 只读

TransportMessage 类型请求,是一个上下文对象。

代理请求
request.uri 字符串 只读

在 API 代理中,ProxyEndpoint 中的代理 <BasePath>(除了代理的基准网址之外)会映射到 TargetEndpoint 中的目标服务网址。例如:

<ProxyEndpoint>
...
  <BasePath>/my-mock-proxy</BasePath>

指向

<TargetEndpoint>
...
  <HTTPTargetConnection>
    http://mocktarget.apigee.net
  </HTTPTargetConnection>

请求中,request.uri 是代理基本路径 + 地址的其余部分,包括查询参数。

响应中,request.uri 是HTTPTargetConnection 之后的地址的其余部分(包括查询参数)。

这种区别是因为原始请求进入了代理,但代理随后向目标服务发出另一个请求。

假设对我们的示例代理进行了以下调用,该代理的基本路径为“/my-mock-proxy”:

http://my_org-test.apigee.net/my-mock-proxy/user?user=Dude

代理调用了:

http://mocktarget.apigee.net

这将“/user?user=Dude”附加到网址。

  • 请求:request.uri = "/my-mock-proxy/user?user=Dude"
  • 响应:request.uri = "/user?user=Dude"
代理请求(响应不同)
request.url 字符串 只读

向目标端点发出的请求的完整网址,包括查询字符串参数,但不包含端口号(如果已指定)。

例如,如果您调用示例代理“http://my_org-test.apigee.net/my-mock-proxy/user?user=Dude”,且目标端点为“http://example.com:8080”,则值为:

  • 请求:不适用
  • 响应:“http://example.com/user?user=Dude”
目标响应
request.verb 字符串 只读

用于请求的 HTTP 动词。例如,“获取”,“放置”和“删除”。

代理请求
request.version 字符串 只读

请求的 HTTP 版本。例如,“1.1”。

代理请求

response

完整的响应,包括存在的任何载荷。

下表介绍了 response 变量的属性:

媒体资源 类型 读写 说明 范围开始
response message 读写

目标返回的完整响应消息。

目标响应
response.content 字符串 读写

目标返回的响应消息的载荷内容。

目标响应
response.formparam.param_name 字符串 读写

响应中表单参数的值。

目标响应
response.formparam.param_name.
 values.count
整数 只读

响应中指定表单参数的所有值的计数。

目标响应
response.formparams.count 整数 只读

响应中所有表单参数的计数。

目标响应
response.formparams.names 集合 只读

响应中所有表单参数的名称。

目标响应
response.header.header_name 字符串 读写

获取或设置响应中指定 HTTP 标头的值。

如果标头文本包含逗号,Apigee Edge 将推断多个值。在这种情况下,response.header.header_name 仅返回第一个值。

要读取整个标头,请使用 response.header.header_name.values 格式。

目标响应
response.header.header_name.
 values
集合 只读

响应中指定 HTTP 标头的所有值。

目标响应
response.header.header_name.
 values.count
整数 只读

响应中指定 HTTP 标头的所有值的计数。

目标响应
response.header.header_name.N 字符串 读写

响应中第 N 个特定标头值的值。Apigee Edge 使用逗号分隔标头文本值。请注意,用于 N 的索引值从 1 开始,而不是从 0 开始。

例如,如果 Cache-control 标头为“public, maxage=16544”,则 response.header.cache-control.1 将返回“maxage=16544”。

目标响应
response.headers.count 整数 只读

响应中所有标头的计数。

目标响应
response.headers.names 集合 只读

响应中所有标头的名称。

目标响应
response.reason.phrase 字符串 读写

特定请求的响应原因短语。

目标响应
response.status.code 整数 读写

为请求返回的响应代码。您可以使用此变量替换存储在 message.status.code 中的响应状态代码。如需了解详情,请参阅 message

目标响应
response.transport.message 字符串 只读

TransportMessage 类型响应,是一个上下文对象。

目标响应

route

指定 <RouteRule> 和 TargetEndpoint 的名称。

下表介绍了 route 变量的属性:

媒体资源 类型 读写 说明 范围开始
route.name 字符串 只读

在 ProxyEndpoint 中执行的 <RouteRule> 的名称。例如,“默认”。RouteRule 引用 API 代理 TargetEndpoint 来执行。

目标请求
route.target 字符串 只读

已执行的 TargetEndpoint 的名称。例如,“默认”。

目标请求

router

router.uuid 属性的容器,已被弃用。

下表介绍了 router 变量的属性:

媒体资源 类型 读写 说明 范围开始
router.uuid 字符串 只读

已弃用并返回 null。(原处理代理的路由器的 UUID。)

代理请求

servicecallout

描述 ServiceCallout 政策的 TargetEndpoint。

下表介绍了 servicecallout 变量的属性:

媒体资源 类型 读写 说明 范围开始
servicecallout.policy_name.expectedcn 字符串 读写

ServiceCallout 政策政策中提到的 TargetEndpoint 的预期通用名称。只有当 TargetEndpoint 引用 TLS/SSL 端点时,此设置才有意义。

代理请求
servicecallout.policy_name.target.url 字符串 读写

特定 ServiceCallout 政策的 TargetEndpoint 网址。

代理请求
servicecallout.requesturi 字符串 读写

ServiceCallout 政策政策的 TargetEndpoint URI。URI 是不包含协议和网域规范的 TargetEndpoint 网址。

代理请求

system

指定系统的 IP 地址,以及有关代理的详细信息。

下表介绍了 system 变量的属性:

媒体资源 类型 读写 说明 范围开始
system.interface.interface_name 字符串 只读

系统的 IP 地址。

代理请求
system.pod.name 字符串 只读

代理在其中运行的 pod 的名称。

代理请求
system.region.name 字符串 只读

运行代理的数据中心 区域的名称。

代理请求
system.time 字符串 只读

读取此变量的时间。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”。

此值是字符串表示形式,有相应的 system.timestamp 值。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值“1377112607413”。

代理请求
system.time.year 整数 只读

system.time 中的年份部分。

代理请求
system.time.month 整数 只读

system.time 中的月份部分。

代理请求
system.time.day 整数 只读

system.time 中的日期部分。

代理请求
system.time.dayofweek 整数 只读

system.time 中的星期几部分。

代理请求
system.time.hour 整数 只读

system.time 中的小时部分。

代理请求
system.time.minute 整数 只读

system.time 中的分钟部分。

代理请求
system.time.second 整数 只读

system.time 中的秒部分。

代理请求
system.time.millisecond 整数 只读

system.time 中的毫秒部分。

代理请求
system.time.zone 字符串 只读

系统的时区。

代理请求
system.timestamp 只读

64 位(长)整数,表示此变量被读取的时间。该值是从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。例如,“1534783015000”。

代理请求
system.uuid 字符串 只读

处理代理的消息处理器的 UUID。

代理请求

target

描述请求的目标。

下表介绍了 target 变量的属性:

媒体资源 类型 读写 说明 范围开始
target.basepath 字符串 只读

已在代理的 TargetEndpoint 中作出定义的指向目标服务的资源路径(不包括网域),不包括查询参数。

例如,假设 API 代理调用以下目标:

<TargetEndpoint name="default">
...
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net/user?user=Dude</URL>
  </HTTPTargetConnection>

在此示例中,target.basepath 为“/user”。

如果目标为:

<TargetEndpoint name="default">
...
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
  </HTTPTargetConnection>

target.basepath 将为 null。

目标请求
target.copy.pathsuffix 布尔值 读写

该属性为“true”时,从 ProxyEndpoint 转发到 TargetEndpoint 的请求会保留路径后缀(ProxyEndpoint 基本路径中定义的位于 URI 后面的 URI 路径片段)。

目标请求
target.copy.queryparams 布尔值 读写

该属性为“true”时,从 ProxyEndpoint 转发到 TargetEndpoint 的请求会保留查询参数。

目标请求
target.country 字符串 只读

目标服务器提供的 TLS/SSL 证书中显示的国家/地区

目标响应
target.cn 字符串 只读

TargetEndpoint 的通用名称。只有当 TargetEndpoint 引用 TLS/SSL 端点时,此设置才有意义。

目标请求
target.email.address 字符串 只读

目标服务器提供的 TLS/SSL 证书中显示的电子邮件地址

目标响应
target.expectedcn 字符串 读写

TargetEndpoint 的预期通用名称。只有当 TargetEndpoint 引用 TLS/SSL 端点时,此设置才有意义。

代理请求
target.host 字符串 只读

将响应返回到 API 代理的目标服务的域名。

目标响应
target.ip 字符串 只读

将响应返回到 API 代理的目标服务的 IP 地址。

目标响应
target.locality 字符串 只读

目标服务器提供的 TLS/SSL 证书中显示的市行政区(城市)

目标响应
target.name 字符串 只读

从 Targetendpoint 接收消息的目标。

目标请求
target.organization 字符串 只读

目标服务器提供的 TLS/SSL 证书中显示的组织。

目标响应
target.organization.unit 字符串 只读

目标服务器提供的 TLS/SSL 证书中显示的组织单元。

目标响应
target.port 整数 只读

将响应返回到 API 代理的目标服务的端口号。

目标响应
target.received.end.time 字符串 只读

TargetEndpoint 完成从目标接收响应的时间(以字符串形式表示)。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”。

此时间值是字符串表示形式,有相应的 32 位时间戳数量表示形式。例如,世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值“1377112607413”。

目标响应
target.received.end.
  timestamp
只读

指定 TargetEndpoint 完成从目标接收响应的时间戳值。例如,“1534783015000”。此值是一个 64 位(长)整数,其中指明了从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。

目标响应
target.received.start.time 字符串 只读

TargetEndpoint 开始从目标接收响应的时间(以字符串形式表示)。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”。

此时间值是字符串表示形式,有相应的 32 位时间戳数量表示形式。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值“1377112607413”。

目标响应
target.received.start.
  timestamp
只读

指定 TargetEndpoint 开始从目标接收响应的时间戳值。例如,“1534783015000”。此值是一个 64 位(长)整数,其中指明了从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。

目标响应
target.scheme 字符串 只读

范围开始:目标响应
类型:字符串
权限:读写

根据请求消息返回 http 或 https。

目标请求
target.sent.end.time 字符串 只读

代理停止向 TargetEndpoint 指定网址发送请求的时间(以字符串形式表示)。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”。

此时间值是字符串表示形式,有相应的 32 位时间戳数量表示形式。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值“1377112607413”。

目标请求
target.sent.end.timestamp 只读

指定代理停止向 TargetEndpoint 指定网址发送请求的时间戳值。例如,“1377112607413”。此值是一个 64 位(长)整数,其中包含从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。

目标请求
target.sent.start.time 字符串 只读

代理开始向 TargetEndpoint 指定网址发送请求的时间(以字符串形式表示)。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”。

此时间值是字符串表示形式,有相应的 32 位时间戳数量表示形式。例如,“世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47”对应时间戳值“1377112607413”。

目标请求
target.sent.start.timestamp 只读

指定代理开始向 TargetEndpoint 指定网址发送请求的时间戳值。例如,“1534783015000”。此值是一个 64 位(长)整数,其中指明了从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。

目标请求
target.ssl.enabled 布尔值 只读

TargetEndpoint 是否在 TLS/SSL 上运行。

代理请求
target.state 字符串 只读

目标服务器提供的 TLS/SSL 证书中显示的状态。

目标响应
target.url 字符串 读写

在 TargetEndpoint XML 文件或动态目标网址中配置的网址(前提是在消息流过程中已设置 target.url)。变量不包含任何其他路径元素或查询参数。如果调用超出范围或未设置,则返回 null。

目标请求

variable

variable.expectedcn 属性的容器。

下表介绍了 variable 变量的属性:

媒体资源 类型 读写 说明 范围开始
variable.expectedcn 字符串 读写

为通用名称公开的变量(如果变量在 TLS/SSL 上运行)。

代理请求

如需详细了解如何使用 TLS,请参阅 TLS/SSL 简介

virtualhost

指定有关虚拟主机的详细信息。

下表介绍了 virtualhost 变量的属性:

媒体资源 类型 读写 说明 范围开始
virtualhost.aliases.values 字符串数组 只读

在特定请求期间命中的虚拟主机的主机别名。

代理请求
virtualhost.name 字符串 只读

处理源客户端请求的虚拟主机的名称。

代理请求
virtualhost.ssl.enabled 布尔值 只读

如果在虚拟主机配置中启用了 TLS/SSL,会返回“true”。

代理请求

如需详细了解如何使用虚拟主机,请参阅配置虚拟主机