流变量参考文档

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

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

Apigee 定义了以下流变量:

apigee                 is                       request
apiproduct             loadbalancing            response
apiproxy               message                  route
client                 messageid                servicecallout
current                mint                     system
environment            organization             target
error                  proxy                    variable
fault                  publishmessage
graphql                ratelimit

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

apigee

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

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

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

apiproduct

一个辅助变量,提供 API 产品相关信息。

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

属性 类型 读写 说明 范围开始
apiproduct.operation 字符串 只读

API 产品操作的名称。此变量可帮助您区分配额政策的设置和 API 产品操作的配额设置。

例如 my-operation

代理请求
apiproduct.operation.resource 字符串 只读

与请求匹配的操作的资源名称。

代理请求
apiproduct.operation.methods 数组 只读

匹配操作允许的一个 HTTP 方法数组。

代理请求
apiproduct.operation.attributes.key_name 数组 只读

获取与 key_name 匹配的自定义特性值。

代理请求

详情请参阅以下内容:

apiproxy

描述 API 代理。

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

属性 类型 读写 说明 范围开始
apiproxy.name 字符串 只读 API 代理的名称。例如 My Proxy 代理请求
apiproxy.revision 字符串 只读 API 代理的修订版本号。例如 6 代理请求
apiproxy.basepath 字符串 只读 部署基本路径(在 API 部署期间指定)。 代理请求

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

client

向负载均衡器发送请求的应用或系统。

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

属性 类型 读写 说明 范围开始
client.cn 字符串 只读

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

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

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

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

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

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

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

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

向负载均衡器发送消息的客户端或系统的 IP 地址。例如,该属性可以是原始客户端 IP,也可以是负载均衡器 IP。

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

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

代理请求
client.organization 字符串 只读 客户端提供的 TLS/SSL 证书中显示的组织。(不一定与 Apigee 中的组织一致。) 代理请求
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 字符串 只读

如果为 TLS/SSL 配置了 ProxyEndpoint,则为 true;否则为 false

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

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

代理请求

current

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

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

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

您可以在 Apigee 界面的 Trace 视图中查看这些属性。

environment

environment.name 属性的容器。

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

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

error

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

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

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

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

错误
error.status.code 整数 只读

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

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

与错误相关的原因短语。例如:Bad Request

错误
error.transport.message TransportMessage 只读

TransportMessage 类型的任何错误。

错误
error.state 整数 只读

出现错误的流中的状态。

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

获取或设置响应标头。

错误

fault

提供有关运行时错误来源、原因和详细信息的信息。当政策抛出错误时,Apigee 会设置这些变量,并且值特定于每个政策。如需了解 fault 变量的设置时间,请参阅关于政策错误

属性 类型 读写 说明 范围开始
fault.name 字符串 只读 故障的名称,正如每个政策参考文档主题中都包含的运行时错误表中所述。在应用到 FaultRules 的条件中,此变量可能会很有用。 错误
fault.reason 字符串 只读 故障的原因。例如,当 OASValidation 政策检测到入站请求未根据 OpenAPI 规范进行验证时,会将此变量设置为字符串来描述政策名称、规范名称和详细信息(说明请求为何不符合规范)。其他政策会将此变量设置为适合其故障的消息。 错误
fault.category 字符串 只读 类别。例如,如果错误是在政策步骤中发生,则此变量可能会存储值“Step”。在应用到 FaultRules 的条件中,此变量可能会很有用。 错误
fault.subcategory 字符串 只读 子类别。例如,如果 OASValidation 政策检测到请求未根据 OpenAPI 规范进行验证,则会将此变量设置为“OASValidationFailure”。在应用到 FaultRules 的条件中,此变量可能会很有用。 错误

graphql

使您可以在运行时访问 GraphQL 查询的结果。如需了解详情,请参阅 GraphQL 政策

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

属性 类型 读写 说明
graphql 复杂类型 只读/读写 GraphQL 根查询。 范围
graphql.fragment 复杂类型 只读/读写 对此查询的默认片段的引用。 范围
graphql.fragment.count 整数 只读 此 GraqhQL 查询生成的片段数量。 范围
graphql.fragment.INDEX.selectionSet.INDEX 类型 只读/读写 对指定索引处的选择集的引用。 范围
graphql.fragment.INDEX.selectionSet.INDEX.name 字符串 只读/读写 指定索引处的选择集的名称。 范围
graphql.fragment.INDEX.selectionSet.count 整数 只读 此片段中的选择集的数量。 范围
graphql.fragment.INDEX.selectionSet.name 字符串 只读/读写 片段中的默认选择集的名称。 范围
graphql.operation 复杂类型 只读/读写 对查询默认操作的引用。

您不能在操作级层设置配额,而应在环境级层进行设置。

范围
graphql.operation.name 字符串 只读 查询的默认操作的名称。 范围
graphql.operation.operationType Enumeration 只读 可以对此 API 代理执行的查询的默认操作类型。可能的值有 querymutationall 范围
graphql.operation.selectionSet 复杂类型 查询的默认操作的默认选择集。 范围
graphql.operation.selectionSet.count 整数 只读 查询的默认操作中的选择集数量。 范围
graphql.operation.selectionSet.name 字符串 只读 查询默认操作的默认选择集的名称。 范围
graphql.operation.selectionSet.INDEX 整数 只读 对选择集列表中指定索引处的选择集的引用。 范围
graphql.operation.selectionSet.INDEX.name 字符串 只读 此操作的选择集列表中指定索引处的选择的名称。 范围
graphql.operation.selectionSet.INDEX.[selectionSet] 复杂类型 只读/读写 一个或多个额外选择集对象。

选择集可以递归方式访问。例如,在 selectionSet.index 之后,您可以拥有另一个 selectionSet.index(而不是拥有 name 属性)。然后,依此类推,直至达到您在 GraphQL 政策中设置的 <MaxCount> 值为止。

范围
graphql.operation.selectionSet.INDEX.directive 复杂类型 对指定选择集中的默认指令的引用。 范围
graphql.operation.selectionSet.INDEX.directive.count 复杂类型 范围
graphql.operation.selectionSet.INDEX.directive.INDEX 整数 只读 对指定索引处的指令的引用。 范围
graphql.operation.selectionSet.INDEX.directive.INDEX.argument.INDEX 整数 只读 对指定索引处的参数的引用。 范围
graphql.operation.selectionSet.INDEX.directive.INDEX.argument.INDEX.name 字符串 指定索引处参数的名称。 范围
graphql.operation.selectionSet.INDEX.directive.INDEX.argument.INDEX.value 字符串 指定索引处参数的值。 范围
graphql.operation.selectionSet.INDEX.directive.name 字符串 范围
graphql.operation.variableDefinitions 复杂类型 对查询默认操作的变量定义列表的引用。 范围
graphql.operation.variableDefinitions.count 整数 查询默认操作的变量定义的数量。 范围
graphql.operation.variableDefinitions.INDEX 整数 对指定索引处变量定义的引用。 范围
graphql.operation.variableDefinitions.INDEX.name 字符串 指定索引处变量定义的名称。 范围
graphql.operation.variableDefinitions.INDEX.type 指定索引处变量定义值的类型。 范围

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 字符串 读写

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

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

如果您希望将整个标头作为字符串,请使用类似于 message.header.header_name.values.string 的变量。

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

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

例如,如果 Cache-control 标头为 public,maxage=16544,则 message.header.cache-control.2 的返回值为 maxage=16544

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

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

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

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

代理请求
message.header.header_name.
 values.string
字符串 只读

消息中特定标头的所有值,以单个字符串的形式表示。

例如,如果 Cache-control 标头为 public,maxage=16544,则 message.header.cache-control.values.string 的返回值为 public,maxage=16544

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

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

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

消息中所有 HTTP 标头的值

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

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

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

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

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

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

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

  • message.queryparam.type.1siteid:1
  • message.queryparam.type.2language:en-us
  • message.queryparam.type.3currency:USD
代理请求
message.queryparam.param_name.
 values
集合 只读

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

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

代理请求
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=dangermessage.querystring 的值为 name=nick&surname=danger

代理请求
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 记录在 Apigee 错误日志中,用于将 messageid 与错误关联。

代理请求

mint

提供获利相关信息的帮助程序变量。

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

属性 类型 读写 说明 范围开始
mint.limitscheck.is_request_blocked 布尔值 只读

指定 API 请求是否已被阻止的标记。如果 is_subscription_foundfalse,则设置为 true

如果 API 代理已附加 MonetizationLimitsCheck 政策,则此流变量可用。请参阅在 API 代理中强制执行获利限制

代理请求
mint.limitscheck.is_subscription_found 布尔值 只读

指定开发者是否对 API 产品具有有效订阅的标记。如果开发者有订阅,则设置为 true

如果 API 代理已附加 MonetizationLimitsCheck 政策,则此流变量可用。请参阅在 API 代理中强制执行获利限制

代理请求
mint.limitscheck.prepaid_developer_balance 数字 只读

与费率方案的币种关联的开发者预付费账号电子钱包中的当前余额。

代理请求
mint.limitscheck.prepaid_developer_currency 字符串 只读

mint.limitscheck.prepaid_developer_balance 变量中的余额的币种。

代理请求
mint.limitscheck.purchased_product_name 字符串 只读

关联 API 产品的名称。

如果 API 代理已附加 MonetizationLimitsCheck 政策,则此流变量可用。请参阅在 API 代理中强制执行获利限制

代理请求
mint.limitscheck.status_message 字符串 只读

有关执行 MonetizationLimitsCheck 政策的其他信息,用于调试用途。

如果 API 代理已附加 MonetizationLimitsCheck 政策,则此流变量可用。请参阅在 API 代理中强制执行获利限制

代理请求
mint.mintng_consumption_pricing_rates 字符串 只读

基于消耗的费用。

创建费率方案时设置费用。

PostClientFlow
mint.mintng_consumption_pricing_type 字符串 只读

基于消耗的价格类型。例如:FIXED_PER_UNIT

创建费率方案时设置基于消耗的费用。

PostClientFlow
mint.mintng_currency 字符串 只读

计算收益所用的币种。

此流变量的值为 currency 获利变量的值。

DataCapture 政策
mint.mintng_dev_share 数字 只读

要与开发者分享的收益。

创建费率方案时设置要与开发者分享的收益。

PostClientFlow
mint.mintng_is_apiproduct_monetized 布尔值 只读

指定 API 产品当前是否启用获利功能的标记(例如,是否正在采用有效的费率方案)。

此流变量由附加到 API 代理的 VerifyAPIKey 或 VerifyAccessToken 政策添加。请参阅添加身份验证政策

代理请求
mint.mintng_price 数字 只读

用于计算开发者分成的收益。

此流变量的值为 revShareGrossPrice 获利变量的值。

DataCapture 政策和 PostClientFlow
mint.mintng_price_multiplier 数字 只读

每事务费用需要与这一倍数(系数)相乘。

此流变量的值为 perUnitPriceMultiplier 获利变量的值。

DataCapture 政策和 PostClientFlow
mint.mintng_rate 数字 只读

API 调用收取的费率。

此流变量显示每次 API 调用的基于用量的费用。在创建费率方案时设置基于用量的费用。如果您在 DataCapture 政策中配置了 perUnitPriceMultiplier 获利变量,Apigee 会在考虑 perUnitPriceMultiplier 变量的值后计算事务费用。如需了解详情,请参阅指标中的 Api price multiplier

PostClientFlow
mint.mintng_rate_before_multipliers 数字 只读

在未进行 perUnitPriceMultiplier 计算的情况下对 API 调用收取的费率。

如果 DataCapture 政策捕获 perUnitPriceMultiplier 获利变量,此流变量会显示将事务费用乘以 perUnitPriceMultiplier 之前的事务费用。

PostClientFlow
mint.mintng_rate_plan_id 字符串 只读

费率方案的 ID。

此流变量由附加到 API 代理的 VerifyAPIKey 或 VerifyAccessToken 政策添加。请参阅添加身份验证政策

代理请求
mint.mintng_revenue_share_rates 字符串 只读

收益分成率。

创建费率方案时设置收益分成率。

PostClientFlow
mint.mintng_revenue_share_type 字符串 只读

收益分成类型。例如:FIXED

创建费率方案时设置收益分成类型。

PostClientFlow
mint.mintng_tx_success 布尔值 只读

指定事务是否获利。

此流变量的值为 transactionSuccess 获利变量的值。

DataCapture 政策
mint.prepaid_updated_developer_usage 数字 只读

预付费开发者的当前使用情况。

使用情况根据您的费率方案配置和 perUnitPriceMultiplier 获利变量的值计算。

PostClientFlow
mint.rateplan_end_time_ms 数字 只读

费率方案的到期时间(以从纪元算起的毫秒数为单位)。

此流变量由附加到 API 代理的 VerifyAPIKey 或 VerifyAccessToken 政策添加。请参阅添加身份验证政策

代理请求
mint.rateplan_start_time_ms 数字 只读

费率方案的激活时间(以从纪元算起的毫秒数为单位)。

此流变量由附加到 API 代理的 VerifyAPIKey 或 VerifyAccessToken 政策添加。请参阅添加身份验证政策

代理请求
mint.status 字符串 只读

已获利调用的状态。 仅在发生错误时填充。

PostClientFlow
mint.status_code 数字 只读

获利调用的 HTTP 状态代码。仅在发生错误时填充。

PostClientFlow
mint.subscription_end_time_ms 数字 只读

API 产品订阅的到期时间(以从纪元算起的毫秒数为单位)。

如果 API 代理已附加 MonetizationLimitsCheck 政策,则此流变量可用。请参阅在 API 代理中强制执行获利限制

代理请求
mint.subscription_start_time_ms 数字 只读

API 产品订阅的激活时间(以从纪元算起的毫秒数为单位)。

如果 API 代理已附加 MonetizationLimitsCheck 政策,则此流变量可用。请参阅在 API 代理中强制执行获利限制

代理请求
mint.tx_success_result 布尔值 只读

指示事务是否成功获利。

mint.tx_success_result 变量可以具有以下值:

  • tx_success 设置为 truetransactionSuccess 变量为 true,事务获利。由于事务获利,因此会计算 mint.mintng_ratemint.mintng_dev_share 变量的值。
  • tx_success 设置为 falsetransactionSuccess 变量为 false,事务未获利。由于事务未获利,因此不会计算 mint.mintng_ratemint.mintng_dev_share 变量的值。
  • 未找到 tx_success。消息状态代码不是 2xx:未捕获 transactionSuccess 变量,事务的 HTTP 状态代码 (message.status.code) 不是 2xx。事务未获利。
  • 未找到 tx_success。消息状态代码不是 2xx:未捕获 transactionSuccess 变量,事务的 HTTP 状态代码 (message.status.code) 为 2xx。事务获利。
PostClientFlow

详情请参阅以下内容:

organization

organization.name 属性的容器。

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

属性 类型 读写 说明 范围开始
organization.name 字符串 只读

组织名称。

代理请求

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

proxy

API 代理配置。

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

属性 类型 读写 说明 范围开始
proxy.basepath 字符串 只读

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

假设您配置了一个基本路径为 /v2/weatherapi 的 API 代理端点。(如需了解详情,请参阅代理端点配置。)在这种情况下,如果入站请求使用网址 https://myhost.example.net/v2/weatherapi/forecastrss?w=12797282,则:

  • 主机名是 myhost.example.net。您可以通过读取变量 request.header.host 来检索此内容。
  • 基本路径为 /v2/weatherapi。通过读取变量 proxy.basepath 检索此内容。
  • 路径后缀为 /forecastrss。通过读取变量 proxy.pathsuffix 检索此内容。

如果您在 API 代理配置中定义了动态基本路径(如 /v2/*/weatherapicode>),则 proxy.basepath 变量将设置为动态路径。如需检索请求的实际网址,请读取并解析变量 proxy.url

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

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

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

为 ProxyEndpoint 配置的名称属性。

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

从客户端发送并在 ProxyEndpoint 接收的网址中的路径后缀值。

基本路径是最左侧的路径组件,可唯一标识环境组中的 API 代理。假设您配置了一个基本路径为 /v2/weatherapi 的 API 代理端点。在这种情况下,将请求发送到 https://myhost.example.net/v2/weatherapi/forecastrss?w=12797282proxy.pathsuffix 变量将保存字符串 /forecastrss

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

获取与 ProxyEndpoint 收到的代理请求相关的完整网址,包括存在的任何查询参数。

代理请求

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

publishmessage

在 PublishMessage 政策执行时填充。

属性 类型 读写 说明 范围开始
publishmessage.message.id 字符串 只读 从 Pub/Sub 服务器返回 messageId(已发布消息的 ID)。

仅当发布请求成功时,Apigee 才会设置此流变量。

代理请求

ratelimit

执行 Quota 或 SpikeArrest 政策时填充。

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

属性 类型 读写 说明 范围开始
ratelimit.policy_name.allowed.count 只读 返回允许的配额计数。 PostClientFlow
ratelimit.policy_name.used.count 只读 返回配额间隔内使用的当前配额。 PostClientFlow
ratelimit.policy_name.available.count 只读 返回配额间隔内的可用配额计数。 PostClientFlow
ratelimit.policy_name.exceed.count 只读 在超出配额后返回 1。 PostClientFlow
ratelimit.policy_name.total.exceed.count 只读 在超出配额后返回 1。 PostClientFlow
ratelimit.policy_name.expiry.time 只读

返回以毫秒为单位的 UTC 时间,该时间决定了配额何时失效,以及新的配额间隔何时开始。

如果配额政策的类型为 rollingwindow,则此值无效,因为配额间隔永不失效。

PostClientFlow
ratelimit.policy_name.identifier 字符串 只读 返回附加到政策的(客户端)标识符引用 PostClientFlow
ratelimit.policy_name.class 字符串 只读 返回与客户端标识符关联的类 PostClientFlow
ratelimit.policy_name.class.allowed.count 只读 返回类中定义的允许配额计数 PostClientFlow
ratelimit.policy_name.class.used.count 只读 返回类中使用的配额 PostClientFlow
ratelimit.policy_name.class.available.count 只读 返回类中的可用配额计数 PostClientFlow
ratelimit.policy_name.class.exceed.count 只读 返回超出当前配额间隔中类限制的请求计数 PostClientFlow
ratelimit.policy_name.class.total.exceed.count 只读 返回超出所有配额间隔内类限制的请求总计数,因此它是所有配额间隔的 class.exceed.count 总和。 PostClientFlow
ratelimit.policy_name.failed 布尔值 只读

指明政策是否失败(true 或 false)。

PostClientFlow

详情请参阅以下内容:

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.grpc.rpc.name 字符串 只读

仅在使用 gRPC 目标服务器时适用。RPC 名称。如需了解 gRPC 代理,请参阅创建 gRPC API 代理

代理请求
request.grpc.service.name 字符串 只读

仅在使用 gRPC 目标服务器时适用。gRPC 状态服务名称。如需了解 gRPC 代理,请参阅创建 gRPC API 代理

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

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

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

如果您希望将整个标头作为字符串,请使用类似于 request.header.header_name.values.string 的变量。

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

请求中第 N 个特定标头值的值。Apigee 使用逗号分隔标头文本值。对于最左侧的值,索引从 1 开始。

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

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

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

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

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

代理请求
request.header.header_name.
 values.string
字符串 只读

请求中特定标头的所有值,以单个字符串的形式。

例如,如果 Cache-control 标头为 public, maxage=16544,则 request.header.cache-control.values.string 的返回值为 public, maxage=16544

代理请求
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.querystringa=hello&a=world,则 request.queryparam.a.1 的返回值为 hello

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

  • request.queryparam.type.1siteid:1
  • request.queryparam.type.2language:en-us
  • request.queryparam.type.3currency:USD
代理请求
request.queryparam.param_name.
 values
集合 只读

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

例如,如果 request.querystringa=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 动词。例如,GETPUTDELETE

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

请求的 HTTP 版本。例如 1.1

代理请求

response

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

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

属性 类型 读写 说明 范围开始
response message 读写

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

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

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

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

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

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

例如,如果 Cache-control 标头为 public,maxage=16544,则 response.header.cache-control 的返回值为 public

如果您希望将整个标头作为字符串,请使用类似于 response.header.header_name.values.string 的变量。

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

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

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

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

目标响应
response.header.header_name.
 values.string
字符串 只读

响应中特定标头的所有值,以单个字符串的形式表示。

例如,如果 Cache-control 标头为 public,maxage=16544,则 response.header.cache-control.values.string 的返回值为 public,maxage=16544

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

响应中第 N 个特定标头值的值。Apigee 使用逗号分隔标头文本值。对于最左侧的值,索引从 1 开始。

例如,如果 Cache-control 标头为 public,maxage=16544,则 response.header.cache-control.2 会返回 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> 的名称。例如 default。RouteRule 引用 API 代理 TargetEndpoint 来执行。

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

已执行的 TargetEndpoint 的名称。例如 default

目标请求

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 字符串 只读

读取此变量的时间。例如,格林尼治标准时间 (GMT) 2013 年 8 月 21 日星期三 19:16:47。

此值是对应的 system.timestamp 值的字符串表示形式。例如,格林尼治标准时间 (GMT) 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 的选项