组合件的行为
组合件按顺序运行策略并对 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 返回到组合件的其余部分。