本页面适用于 Apigee 和 Apigee 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 在请求/响应处理期间实例化的对象。
流变量指的是初始类型还是引用对象取决于上下文,即您引用它的时间。流变量的上下文是 API 代理在其中处理请求/响应的流片段。例如,在响应流上下文的任一片段中,response
流变量是指 response
对象。
在大多数情况下,您可以将流变量视为引用一个对象。要引用该对象的属性,请使用点表示法。例如,要访问 response
的 content
属性,请使用 response.content
。
使用流变量
如需了解如何使用流变量,请参阅流变量概览。
使用流变量时,请注意以下事项:
- 每个流变量(例如
request
)都有可以使用点表示法语法访问的属性。例如:request.headers.count
- 并非所有流变量都可从所有政策或工具访问。例如,在请求 PreFlow 中,您将无法访问
response
。 - 大多数属性为只读状态。在可以读取/写入某些属性的位置,它们也可能为只读状态,具体取决于您在流的哪个位置访问它们。
- 某些政策定义了特定于政策的流变量。例如,ResponseCache 政策定义了
responsecache
变量。如需了解详情,请参阅政策参考文档。 - 请勿依赖 API 代理和应用中未经记录的变量。例如,不要依赖 API 代理中未经记录的 X-Apigee.* 标头中的值,因为这些标头不适合客户使用,并且随时可由 Apigee 移除或更改。
apigee
一个辅助变量,可提供有关政策执行时间的信息。
下表介绍了 apigee
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
apigee.metrics.policy.policy_name.timeTaken |
整数 | 只读 | 政策开始执行的时间(以纳秒为单位)。 | 政策 |
apiproduct
一个辅助变量,提供 API 产品相关信息。
下表介绍了 apiproduct
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
apiproduct.operation |
字符串 | 只读 |
API 产品操作的名称。此变量可帮助您区分配额政策的设置和 API 产品操作的配额设置。 例如 |
代理请求 |
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 位 |
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 位 |
PostClientFlow |
client.sent.start.timestamp |
长 | 只读 | 代理开始从 ProxyEndpoint 向客户端发送响应的时间。此值被表示为一个 64 位(长)整数,其中包含从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。 | PostClientFlow |
client.ssl.enabled |
字符串 | 只读 |
如果为 TLS/SSL 配置了 ProxyEndpoint,则为 |
代理请求 |
client.state |
字符串 | 只读 |
客户端提供的 TLS/SSL 证书中显示的状态。 |
代理请求 |
current
包含有关当前 API 代理流的信息。
下表介绍了 current
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
current.flow.name |
字符串 | 只读 | 当前正在执行的流的名称(例如 PreFlow 、PostFlow 或条件流的名称)。 |
代理请求 |
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 状态代码。例如 |
错误 |
error.reason.phrase |
字符串 | 只读 |
与错误相关的原因短语。例如: |
错误 |
error.transport.message |
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 根查询。 | SCOPE |
graphql.fragment |
复杂类型 | 只读/读写 | 对此查询的默认片段的引用。 | SCOPE |
graphql.fragment.count |
整数 | 只读 | 此 GraqhQL 查询生成的片段数量。 | SCOPE |
graphql.fragment.INDEX.selectionSet.INDEX |
TYPE | 只读/读写 | 对指定索引处的选择集的引用。 | SCOPE |
graphql.fragment.INDEX.selectionSet.INDEX.name |
字符串 | 只读/读写 | 指定索引处的选择集的名称。 | SCOPE |
graphql.fragment.INDEX.selectionSet.count |
整数 | 只读 | 此片段中的选择集的数量。 | SCOPE |
graphql.fragment.INDEX.selectionSet.name |
字符串 | 只读/读写 | 片段中的默认选择集的名称。 | SCOPE |
graphql.operation |
复杂类型 | 只读/读写 | 对查询默认操作的引用。 您不能在操作级层设置配额,而应在环境级层进行设置。 |
SCOPE |
graphql.operation.name |
字符串 | 只读 | 查询的默认操作的名称。 | SCOPE |
graphql.operation.operationType |
枚举 | 只读 | 可以对此 API 代理执行的查询的默认操作类型。可能的值有 query 、mutation 或 all 。 |
SCOPE |
graphql.operation.selectionSet |
复杂类型 | 查询的默认操作的默认选择集。 | SCOPE | |
graphql.operation.selectionSet.count |
整数 | 只读 | 查询的默认操作中的选择集数量。 | SCOPE |
graphql.operation.selectionSet.name |
字符串 | 只读 | 查询默认操作的默认选择集的名称。 | SCOPE |
graphql.operation.selectionSet.INDEX |
整数 | 只读 | 对选择集列表中指定索引处的选择集的引用。 | SCOPE |
graphql.operation.selectionSet.INDEX.name |
字符串 | 只读 | 此操作的选择集列表中指定索引处的选择的名称。 | SCOPE |
graphql.operation.selectionSet.INDEX.[selectionSet] |
复杂类型 | 只读/读写 | 一个或多个额外选择集对象。 选择集可以递归方式访问。例如,在 | SCOPE |
graphql.operation.selectionSet.INDEX.directive |
复杂类型 | 对指定选择集中的默认指令的引用。 | SCOPE | |
graphql.operation.selectionSet.INDEX.directive.count |
复杂类型 | SCOPE | ||
graphql.operation.selectionSet.INDEX.directive.INDEX |
整数 | 只读 | 对指定索引处的指令的引用。 | SCOPE |
graphql.operation.selectionSet.INDEX.directive.INDEX.argument.INDEX |
整数 | 只读 | 对指定索引处的参数的引用。 | SCOPE |
graphql.operation.selectionSet.INDEX.directive.INDEX.argument.INDEX.name |
字符串 | 指定索引处参数的名称。 | SCOPE | |
graphql.operation.selectionSet.INDEX.directive.INDEX.argument.INDEX.value |
字符串 | 指定索引处参数的值。 | SCOPE | |
graphql.operation.selectionSet.INDEX.directive.name |
字符串 | SCOPE | ||
graphql.operation.variableDefinitions |
复杂类型 | 对查询默认操作的变量定义列表的引用。 | SCOPE | |
graphql.operation.variableDefinitions.count |
整数 | 查询默认操作的变量定义的数量。 | SCOPE | |
graphql.operation.variableDefinitions.INDEX |
整数 | 对指定索引处变量定义的引用。 | SCOPE | |
graphql.operation.variableDefinitions.INDEX.name |
字符串 | 指定索引处变量定义的名称。 | SCOPE | |
graphql.operation.variableDefinitions.INDEX.type |
指定索引处变量定义值的类型。 | SCOPE |
is
is.error
属性的容器。
下表介绍了 is
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
is.error |
布尔值 | 只读 |
错误标记。 |
代理请求 |
loadbalancing
提供有关 TargetEndpoint 的负载均衡状态的信息。
下表介绍了 loadbalancing
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
loadbalancing.failedservers |
字符串数组 | 只读 |
在 TargetEndpoint 进行负载均衡期间失败的 TargetServer 列表。 |
目标响应 |
loadbalancing.isfallback |
布尔值 | 只读 |
如果在 TargetEndpoint 进行负载均衡期间调用的 TargetServer 启用了回退功能,则为 |
目标响应 |
loadbalancing.targetserver |
字符串 | 只读 |
在 TargetEndpoint 进行负载均衡期间调用的 TargetServer。只有在定义负载均衡器元素时设置了 |
目标响应 |
message
一个上下文对象,其值与请求流中的 request
相同,或者与响应流中的 response
相同,又或者与错误流中的 error
相同。
下表介绍了 message
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
message |
message |
读写 |
一个上下文对象,其值与请求流中的 |
代理请求 |
message.content |
字符串 | 读写 |
请求、响应或错误消息的内容。 |
代理请求 |
message.formparam.param_name |
字符串 | 读写 |
指定表单参数的值。 |
代理请求 |
message.formparam.param_name. |
集合 | 只读 |
消息中指定表单参数的所有值。 |
代理请求 |
message.formparam.param_name. |
整数 | 只读 |
消息中指定表单参数的值的计数。 |
代理请求 |
message.formparams.count |
整数 | 只读 |
消息中所有表单参数的计数。 |
代理请求 |
message.formparams.names |
集合 | 只读 |
消息中所有表单参数的值。 |
代理请求 |
message.formparams.names.string |
字符串 | 只读 |
消息中所有表单参数的名称的英文逗号分隔列表。 |
代理请求 |
message.formstring |
字符串 | 只读 |
消息中表单字符串的值。 |
代理请求 |
message.header.header_name |
字符串 | 读写 |
获取或设置在请求中找到的特定标头的值。如果标头包含逗号,则在阅读时您只能接收截止到第一个逗号为止的文本片段。 例如,如果 如果您希望将整个标头作为字符串,请使用类似于 |
代理请求 |
message.header.header_name.N |
字符串 | 读写 |
(请求或响应)消息中第 N 个特定标头的值,具体取决于流的状态。Apigee 使用逗号分隔标头文本值。对于最左侧的值,索引从 1 开始。 例如,如果 |
代理请求 |
message.header.header_name. |
集合 | 只读 |
消息中指定 HTTP 标头名称的所有值。 |
代理请求 |
message.header.header_name. |
整数 | 只读 |
消息中指定 HTTP 标头名称的值的计数。 |
代理请求 |
message.header.header_name. |
字符串 | 只读 |
消息中特定标头的所有值,以单个字符串的形式表示。 例如,如果 |
代理请求 |
message.headers.count |
整数 | 只读 |
消息中所有 HTTP 标头的计数。 |
代理请求 |
message.headers.names |
集合 | 只读 |
消息中所有 HTTP 标头的值。 |
代理请求 |
message.headers.names.string |
字符串 | 只读 |
邮件中所有标头的名称的英文逗号分隔列表。 |
代理请求 |
message.path |
字符串 | 读写 |
网址中完整的请求消息路径,不包括任何查询参数。 |
代理请求 |
message.queryparam.param_name |
字符串 | 只读 |
返回指定的消息查询参数。 |
代理请求 |
message.queryparam.param_name.N |
字符串 | 读写 |
消息中第 N 个查询参数的值。例如,如果 例如,要为单个查询参数名称(例如
|
代理请求 |
message.queryparam.param_name. |
集合 | 只读 |
消息中特定查询参数的所有值,采用逗号分隔列表格式。 例如,如果查询字符串为 |
代理请求 |
message.queryparam.param_name. |
整数 | 只读 |
与从客户端应用发送到 ProxyEndpoint 的请求相关的指定查询参数的总计数。 |
代理请求 |
message.queryparams.count |
整数 | 只读 |
与从客户端应用发送到 ProxyEndpoint 的请求相关的所有查询参数的总计数。 |
代理请求 |
message.queryparams.names |
集合 | 只读 |
与从客户端应用发送到 ProxyEndpoint 的请求相关的所有查询参数列表。 |
代理请求 |
message.queryparams.names.string |
字符串 | 只读 |
消息中所有查询参数的名称的英文逗号分隔列表。 |
代理请求 |
message.querystring |
字符串 | 只读 |
包含与从客户端应用发送到 ProxyEndpoint 的请求相关的所有查询参数名称和值的字符串。 例如,对于请求 |
代理请求 |
message.status.code |
整数 | 只读 |
来自目标的响应消息的 HTTP 状态代码。 |
目标响应 |
message.transport.message |
TransportMessage | 只读 |
TransportMessage 类型的消息,是一个上下文对象。 |
代理请求 |
message.uri |
字符串 | 只读 |
包含查询参数的完整 URI 路径(位于网域网址后面)。 例如,对于请求 |
代理请求 |
message.verb |
字符串 | 只读 |
与请求相关的 HTTP 动词( |
代理请求 |
message.version |
字符串 | 读写 |
与从客户端应用发送到 ProxyEndpoint 的请求相关的 HTTP 版本。 |
代理请求 |
如需详细了解消息,请参阅消息模板函数参考文档。
messageid
容纳请求的全局唯一 ID 的容器。
下表介绍了 messageid
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
messageid |
字符串 | 只读 |
保存请求的全局唯一 ID,其中包括负载均衡器主机名。此 ID 允许在将负载均衡器收到的请求发送到消息处理器后对其进行跟踪。 此 ID 记录在 Apigee 错误日志中,用于将 |
代理请求 |
mint
提供获利相关信息的帮助程序变量。
下表介绍了 mint
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
mint.limitscheck.is_request_blocked |
布尔值 | 只读 |
指定 API 请求是否已被阻止的标记。如果 如果 API 代理已附加 MonetizationLimitsCheck 政策,则此流变量可用。请参阅在 API 代理中强制执行获利限制。 |
代理请求 |
mint.limitscheck.is_subscription_found |
布尔值 | 只读 |
指定开发者是否对 API 产品具有有效订阅的标记。如果开发者有订阅,则设置为 如果 API 代理已附加 MonetizationLimitsCheck 政策,则此流变量可用。请参阅在 API 代理中强制执行获利限制。 |
代理请求 |
mint.limitscheck.prepaid_developer_balance |
数字 | 只读 |
与费率方案的币种关联的开发者预付费账号电子钱包中的当前余额。 |
代理请求 |
mint.limitscheck.prepaid_developer_currency |
字符串 | 只读 |
|
代理请求 |
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 |
字符串 | 只读 |
基于消耗的价格类型。例如: 在创建费率方案时设置基于消耗的费用。 |
PostClientFlow |
mint.mintng_currency |
字符串 | 只读 |
计算收益所用的币种。 此流变量的值为 |
DataCapture 政策 |
mint.mintng_dev_share |
数字 | 只读 |
要与开发者分享的收益。 创建费率方案时设置要与开发者分享的收益。 |
PostClientFlow |
mint.mintng_is_apiproduct_monetized |
布尔值 | 只读 |
指定 API 产品当前是否启用获利功能的标记(例如,是否正在采用有效的费率方案)。 此流变量由附加到 API 代理的 VerifyAPIKey 或 VerifyAccessToken 政策添加。请参阅添加身份验证政策。 |
代理请求 |
mint.mintng_price |
数字 | 只读 |
用于计算开发者分成的收益。 此流变量的值为 |
DataCapture 政策和 PostClientFlow |
mint.mintng_price_multiplier |
数字 | 只读 |
每事务费用需要与这一倍数(系数)相乘。 此流变量的值为 |
DataCapture 政策和 PostClientFlow |
mint.mintng_rate |
数字 | 只读 |
API 调用收取的费率。 此流变量显示每次 API 调用的基于用量的费用。在创建费率方案时设置基于用量的费用。如果您在 DataCapture 政策中配置了 |
PostClientFlow |
mint.mintng_rate_before_multipliers |
数字 | 只读 |
在未进行 如果 DataCapture 政策捕获 |
PostClientFlow |
mint.mintng_rate_plan_id |
字符串 | 只读 |
费率方案的 ID。 此流变量由附加到 API 代理的 VerifyAPIKey 或 VerifyAccessToken 政策添加。请参阅添加身份验证政策。 |
代理请求 |
mint.mintng_revenue_share_rates |
字符串 | 只读 |
收益分成率。 在创建费率方案时设置收益分成率。 |
PostClientFlow |
mint.mintng_revenue_share_type |
字符串 | 只读 |
收益分成类型。例如: 在创建费率方案时设置收益分成类型。 |
PostClientFlow |
mint.mintng_tx_success |
布尔值 | 只读 |
指定事务是否获利。 此流变量的值为 |
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 |
布尔值 | 只读 |
指示事务是否成功获利。
|
PostClientFlow |
详情请参阅以下内容:
organization
organization.name
属性的容器。
下表介绍了 organization
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
organization.name |
字符串 | 只读 |
组织名称。 |
代理请求 |
如需详细了解组织,请参阅了解组织。
proxy
API 代理配置。
下表介绍了 proxy
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
proxy.basepath |
字符串 | 只读 |
API 代理端点配置中基本路径的值。基本路径是网址中位于主机后面的最左侧的 URI 片段。条件流 URI 遵循基本路径。 假设您配置了一个基本路径为
如果您在 API 代理配置中定义了动态基本路径(如 |
代理请求 |
proxy.client.ip |
字符串 | 只读 |
入站调用的 |
代理请求 |
proxy.name |
字符串 | 只读 |
为 ProxyEndpoint 配置的名称属性。 |
代理请求 |
proxy.pathsuffix |
字符串 | 只读 |
从客户端发送并在 ProxyEndpoint 接收的网址中的路径后缀值。 基本路径是最左侧的路径组件,可唯一标识环境组中的 API 代理。假设您配置了一个基本路径为 |
代理请求 |
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 时间,该时间决定了配额何时失效,以及新的配额间隔何时开始。 如果配额政策的类型为 |
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. |
集合 | 只读 |
请求中特定表单参数的所有值,采用逗号分隔列表格式。 例如,如果载荷为 |
代理请求 |
request.formparam.param_name. |
整数 | 只读 |
与请求相关的指定表单参数的所有值计数。 |
代理请求 |
request.formparam.param_name.N |
字符串 | 读写 |
消息中第 N 个特定表单参数的值。例如,如果表单字符串是 |
代理请求 |
request.formparams.count |
整数 | 只读 |
与从客户端应用发送的请求相关的所有参数的计数。 |
代理请求 |
request.formparams.names |
集合 | 只读 |
与请求关联的所有参数名称的列表。 |
代理请求 |
request.formparams.names.string |
字符串 | 只读 |
与请求相关的所有表单参数名称的英文逗号分隔列表。 |
代理请求 |
request.formstring |
字符串 | 只读 |
从客户端应用发出的请求中的完整 例如 |
代理请求 |
request.grpc.rpc.name |
字符串 | 只读 |
仅在使用 gRPC 目标服务器时适用。RPC 名称。如需了解 gRPC 代理,请参阅创建 gRPC API 代理。 |
代理请求 |
request.grpc.service.name |
字符串 | 只读 |
仅在使用 gRPC 目标服务器时适用。gRPC 状态服务名称。如需了解 gRPC 代理,请参阅创建 gRPC API 代理。 |
代理请求 |
request.header.header_name |
字符串 | 读写 |
获取或设置在请求中找到的特定标头的值。如果标头包含逗号,则在阅读时您只能接收截止到第一个逗号为止的文本片段。 例如,如果 如果您希望将整个标头作为字符串,请使用类似于 |
代理请求 |
request.header.header_name.N |
字符串 | 读写 |
请求中第 N 个特定标头值的值。Apigee 使用逗号分隔标头文本值。对于最左侧的值,索引从 1 开始。 例如,如果 |
代理请求 |
request.header.header_name. |
集合 | 只读 |
请求中特定标头的所有值。 |
代理请求 |
request.header.header_name. |
整数 | 只读 |
请求中特定标头的所有值的计数。 |
代理请求 |
request.header.header_name. |
字符串 | 只读 |
请求中特定标头的所有值,以单个字符串的形式。 例如,如果 |
代理请求 |
request.headers.count |
整数 | 只读 |
请求中的所有标头的计数。 |
代理请求 |
request.headers.names |
集合 | 只读 |
请求中所有标头的名称。 |
代理请求 |
request.headers.names.string |
字符串 | 只读 |
请求中所有标头的名称的英文逗号分隔列表。 |
代理请求 |
request.path |
字符串 | 只读 |
指向后端服务的非代理资源路径(不包括主机),不包括查询参数。 例如,如果后端服务的 URI 为 |
代理请求 |
request.queryparam.param_name |
字符串 | 读写 |
在请求中找到的特定查询参数的值。 |
代理请求 |
request.queryparam.param_name.N |
字符串 | 读写 |
请求中第 N 个查询参数的值。 例如,如果 例如,要为单个查询参数名称(例如
|
代理请求 |
request.queryparam.param_name. |
集合 | 只读 |
请求中特定查询参数的所有值,采用逗号分隔列表格式。 例如,如果 |
代理请求 |
request.queryparam.param_name. |
整数 | 只读 |
请求中特定查询参数的所有值的计数。 |
代理请求 |
request.queryparams.count |
整数 | 只读 |
请求中所有查询参数的计数。 |
代理请求 |
request.queryparams.names |
集合 | 只读 |
请求中所有查询参数的名称。 |
代理请求 |
request.queryparams.names.string |
字符串 | 只读 |
请求中所有查询参数的名称的英文逗号分隔列表。 |
代理请求 |
request.querystring |
字符串 | 只读 |
从客户端应用发出的请求中的完整查询参数列表。 例如,如果请求为 |
代理请求 |
request.transportid |
字符串 | 只读 |
TransportMessage 类型请求的 ID 为上下文型。 |
代理请求 |
request.transport.message |
Transport-Message | 只读 |
TransportMessage 类型的请求为上下文型。 |
代理请求 |
request.uri |
字符串 | 只读 |
在 API 代理中,ProxyEndpoint 中的代理
指向
在请求中, 在响应中, 这种区别是因为原始请求进入了代理,但代理随后向目标服务发出另一个请求。 假设对我们的示例代理进行了以下调用,该代理的基本路径为
代理调用了:
将
|
代理请求(响应不同) |
request.url |
字符串 | 只读 |
向目标端点发出的请求的完整网址,包括查询字符串参数,但不包含端口号(如果已指定)。 例如,如果您调用示例代理
|
目标响应 |
request.verb |
字符串 | 只读 |
用于请求的 HTTP 动词。例如, |
代理请求 |
request.version |
字符串 | 只读 |
请求的 HTTP 版本。例如 |
代理请求 |
response
完整的响应,包括存在的任何载荷。
下表介绍了 response
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
response |
message |
读写 |
目标返回的完整响应消息。 |
目标响应 |
response.content |
字符串 | 读写 |
目标返回的响应消息的载荷内容。 |
目标响应 |
response.header.header_name |
字符串 | 读写 |
获取或设置响应中指定 HTTP 标头的值。 如果标头文本包含逗号,Apigee 将推断多个值。在这种情况下, 例如,如果 如果您希望将整个标头作为字符串,请使用类似于 |
目标响应 |
response.header.header_name. |
集合 | 只读 |
响应中指定 HTTP 标头的所有值。 |
目标响应 |
response.header.header_name. |
整数 | 只读 |
响应中指定 HTTP 标头的所有值的计数。 |
目标响应 |
response.header.header_name. |
字符串 | 只读 |
响应中特定标头的所有值,以单个字符串的形式表示。 例如,如果 |
目标响应 |
response.header.header_name.N |
字符串 | 读写 |
响应中第 N 个特定标头值的值。Apigee 使用逗号分隔标头文本值。对于最左侧的值,索引从 1 开始。 例如,如果 |
目标响应 |
response.headers.count |
整数 | 只读 |
响应中所有标头的计数。 |
目标响应 |
response.headers.names |
集合 | 只读 |
响应中所有标头的名称。 |
目标响应 |
response.headers.names.string |
字符串 | 只读 |
响应中所有标头的名称的英文逗号分隔列表。 |
目标响应 |
response.reason.phrase |
字符串 | 读写 |
特定请求的响应原因短语。 |
目标响应 |
response.status.code |
整数 | 读写 |
为请求返回的响应代码。您可以使用此变量替换存储在 |
目标响应 |
response.transport.message |
字符串 | 只读 |
TransportMessage 类型响应,是一个上下文对象。 |
目标响应 |
route
指定 <RouteRule>
和 TargetEndpoint 的名称。
下表介绍了 route
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
route.name |
字符串 | 只读 |
在 ProxyEndpoint 中执行的 |
目标请求 |
route.target |
字符串 | 只读 |
已执行的 TargetEndpoint 的名称。例如 |
目标请求 |
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.time.year |
整数 | 只读 |
|
代理请求 |
system.time.month |
整数 | 只读 |
|
代理请求 |
system.time.day |
整数 | 只读 |
|
代理请求 |
system.time.dayofweek |
整数 | 只读 |
|
代理请求 |
system.time.hour |
整数 | 只读 |
|
代理请求 |
system.time.minute |
整数 | 只读 |
|
代理请求 |
system.time.second |
整数 | 只读 |
|
代理请求 |
system.time.millisecond |
整数 | 只读 |
|
代理请求 |
system.time.zone |
字符串 | 只读 |
系统的时区。 |
代理请求 |
system.timestamp |
长 | 只读 |
64 位(长)整数,表示此变量被读取的时间。该值是从世界协调时间 (UTC) 1970 年 1 月 1 日午夜起到操作发生时所经过的毫秒数。例如 |
代理请求 |
system.uuid |
字符串 | 只读 |
处理代理的消息处理器的 UUID。 |
代理请求 |
target
描述请求的目标。
下表介绍了 target
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
target.basepath |
字符串 | 只读 |
已在代理的 TargetEndpoint 中作出定义的指向目标服务的资源路径(不包括网域),不包括查询参数。 例如,假设 API 代理调用以下目标:
在此示例中, 如果目标为:
|
目标请求 |
target.copy.pathsuffix |
布尔值 | 读写 |
该属性为 |
目标请求 |
target.copy.queryparams |
布尔值 | 读写 |
该属性为 |
目标请求 |
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. |
长 | 只读 |
指定 TargetEndpoint 完成从目标接收响应的时间戳值。例如 |
目标响应 |
target.received.start.time |
字符串 | 只读 |
TargetEndpoint 开始从目标接收响应的时间(以字符串形式表示)。例如,世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47。 此时间值是字符串表示形式,有相应的 32 位时间戳数量表示形式。例如,世界协调时间 (UTC) 2013 年 8 月 21 日星期三 19:16:47 对应时间戳值 1377112607413。 |
目标响应 |
target.received.start. |
长 | 只读 |
指定 TargetEndpoint 开始从目标接收响应的时间戳值。例如 |
目标响应 |
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 指定网址发送请求的时间戳值。例如 |
目标请求 |
target.ssl.enabled |
布尔值 | 只读 |
TargetEndpoint 是否在 TLS/SSL 上运行。 |
代理请求 |
target.state |
字符串 | 只读 |
目标服务器提供的 TLS/SSL 证书中显示的状态。 |
目标响应 |
target.url |
字符串 | 读写 |
在 TargetEndpoint XML 文件或动态目标网址中配置的网址(前提是在消息流过程中已设置 |
目标请求 |
variable
variable.expectedcn
属性的容器。
下表介绍了 variable
变量的属性:
属性 | 类型 | 读写 | 说明 | 范围开始 |
---|---|---|---|---|
variable.expectedcn |
字符串 | 读写 |
为通用名称公开的变量(如果变量在 TLS/SSL 上运行)。 |
代理请求 |
如需详细了解如何使用 TLS,请参阅用于配置 TLS 的选项。