组合件的行为

组合件按顺序运行策略并对 API 调用的不同上下文起作用。

生成 API 调用时,在执行组合件之前会实施安全和速率限制。 在执行组合件期间,会根据流中包含的策略对其进行分支、抛出和捕获。消息上下文可被视为流经组合件,由各种策略使用和改变。 除了消息,也可访问和创建其他上下文。

安全性和速率限制

先要实施安全性和速率限制,然后再执行组合件。

首先,安全性定义和 CORS 访问控制可用于验证 API 调用。任何 API 密钥安全性定义都可用于识别预订了包含 API 的产品的应用程序。如果安全性定义不允许访问,那么会拒绝 API 调用。

如果通过客户机标识或客户机密钥识别应用程序,那么会根据计划或调用的操作实施速率限制。

组合件

将从左侧填充的圆圈到右侧未填充的圆圈依次执行组合件。 但是,当使用 if 和 operation-switch 逻辑构造时,存在确定分支的空间,或者在执行 throw 策略时,存在用于忽略的剩余组合件的空间。

消息是受到未经配置的任意策略影响的上下文。在 API 调用开始时,消息为空,而在 API 调用结束时,会将消息用作为响应。

请求上下文包含由 API 调用者发送的信息,并且会随着调用的操作类型和操作配置而变化。例如,GET 操作从不会具有填充的 request.body,您可以配置操作以具有 request.parameters(查询参数)。组合件中的第一个策略会对请求起作用,并产生消息的第一个实例。如果没有策略,那么会将请求返回给调用者。

管理上下文

因为可以覆盖消息,所以这有利于在可能的情况下创建和引用新的上下文,从而在 API 调用期间保存和复用这些上下文。

  • 当需要执行的策略只对消息起作用时,请使用 map 策略来覆盖消息上下文。
  • 当要使用对 API 发出的原始请求时,请使用请求上下文。
  • 当要保存您的消息时,请使用 map、invoke 和 proxy 策略来创建新的上下文。
    注: 在创建新的上下文时,除非同时映射到消息,否则会用空对象覆盖消息。

例如,invoke 策略是组合件中的第一个策略,它的响应会作为消息覆盖请求。该消息随后会受到验证策略的影响,然后 map 策略会将消息保存为新的上下文,为第二个 invoke 策略覆盖消息做好准备,而不会丢失第一个 invoke 策略的输出。

您也可以访问消息外部的上下文或定制的上下文,但无法写入这些上下文。有关上下文列表,请参阅API Connect 上下文变量

分支和 catch

使用 operation-switch 或 if 等逻辑构造时,您可以在满足特定条件的情况下执行组合件的不同部分。在组合件出现分支时,采用与完整组合件相同的方式执行该构造包含的组合件的子部分。但上下文仍与完整的组合件共享。

在由于策略执行期间出现的错误或遇到 throw 策略而触发 catch 时,会忽略组合件流的其余部分。通过执行的 catch 共享所有上下文,且当结束 catch 时,会完成 API 调用。无法从 catch 返回到组合件的其余部分。

时间戳记图标 上次更新时间:2019-06-21