本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
您可以让共享流在一组 API 中执行样板请求预处理或响应后处理。您可以通过流钩子连接共享流,使它在同一位置针对所有部署到特定环境的 API 代理执行。这为您提供了一个单独实现和部署的逻辑序列,该序列不属于代理的实现代码。
由于连接到流钩子的代码处于 API 代理核心逻辑的上下文范围之外,因此它的某些行为与 API 代理不同。请注意以下几点:
- 您必须有权将共享流连接到流钩子。您必须是组织管理员。
- 每个流钩子只能连接一个共享流。
- 您可以将同一共享流连接到多个流钩子。
- 如果连接到流钩子的共享流引发故障,或者在共享流执行期间出现错误,则系统将拒绝该消息并将错误发回给调用者。
- 如果消息在执行流钩子期间遭拒,则系统会将详细信息记录到调用代理的上下文中。共享流还可以通过自定义代码和错误消息抛出错误
以下视频演示了如何将共享流连接到流钩子,然后在 Apigee 界面中跟踪该流。
通过流钩子连接到代理的共享流提供了一个绝佳位置来处理实施广泛的政策要求的逻辑。例如,假设您有一个团队负责管理代表不同业务线 (LOB) 的多个团队的一组安全要求。每个 LOB 团队都可以根据自己的要求开发 API,而无需考虑更广泛的安全要求。安全团队可以在共享流中实现这些安全要求,然后使用流钩子将流程连接到 Apigee 环境。由于共享流不是代理代码的一部分,因此安全团队可以根据需要进行修改,而不会影响 LOB 代码。
对于部署到代理钩子环境的每个 API 代理,通过流钩子连接的共享流会在该位置执行。因此,只有 Apigee 组织的管理员可以使用流钩子。
如需详细了解共享流,请参阅创建可重复使用的共享流。
您可以使用 Apigee 界面或 Flowhooks API 将共享流连接到流钩子。您在以下每个位置最多只能将一个共享流连接到流钩子:
-
代理前流钩子,适用于需要在代理端点执行前实施的逻辑。
例如,您可能具备逻辑,用于对环境中的所有 API 实施安全机制。
目标前流钩子,适用于需要在目标端点执行之前实施的逻辑。
例如,您可以在请求到达后端之前实现日志记录。您还可以通过从请求中移除某些字段来实施调解。
目标后流钩子,适用于需要在目标响应执行后实施的逻辑。
此逻辑将在响应从后端返回后立即实施。您可以使用它记录后端响应或者通过从后端响应中移除敏感字段来执行调解。
代理后流钩子,适用于需要在代理端点执行之后且响应发送到客户端之前实施的逻辑。
其中包括适用于 CORS、记录响应或者执行混搭或格式设置的实施逻辑。
将共享流连接到流钩子
要将共享流连接到流钩子,您必须是包含共享流的组织中的管理员。
Cloud 控制台中的 Apigee
如需将共享流连接到流钩子,请执行以下操作:
- 在浏览器中打开 Cloud 控制台中的 Apigee 界面。
- 选择包含共享流的组织。请参阅在组织之间切换。
共享流将可供从该组织部署到环境的任何 API 代理和共享流使用。此组织以外的 API 代理和共享流将无法使用该共享流。
- 在左侧导航窗格中,点击管理 > 环境。
- 从可用环境列表中选择要修改的环境。
- 点击环境详情页面上的流钩子标签页。
系统会显示流钩子视图。
- 在流钩子列表中,找到要为其附加共享流的流钩子。您选择的流钩子取决于您希望执行共享流的位置。
流钩子位置 说明 Pre-proxy 在代理端点执行之前执行 Pre-target 在目标端点执行之前执行 Post-target 在目标响应执行之后执行 Post-proxy 在代理端点之后且在将响应发送到客户端之前执行 - 在您选择的流钩子的列表框中,选择要连接的共享流。
- 根据需要将共享流连接到其他流钩子。
- 点击保存以将选定的共享流连接到流钩子。
经典版 Apigee
如需将共享流连接到流钩子,请执行以下操作:
- 登录 Apigee 界面。
- 选择包含共享流的组织。请参阅在组织之间切换。
共享流将可供从该组织部署到环境的任何 API 代理和共享流使用。此组织以外的 API 代理和共享流将无法使用该共享流。
- 在左侧导航栏中,依次选择 管理 > 环境 > 流钩子。
流钩子视图显示以下内容:
- 从环境下拉列表中选择要修改的环境。
- 在流钩子列表中,找到要为其附加共享流的流钩子。您选择的流钩子取决于您希望执行共享流的位置。
流钩子位置 说明 Pre-proxy 在代理端点执行之前执行 Pre-target 在目标端点执行之前执行 Post-proxy 在代理端点之后且在将响应发送到客户端之前执行 Post-target 在目标响应执行之后执行 - 将光标悬停在列表中的流钩子上可显示操作列。
- 点击 修改。
- 在共享流对话框中,在共享流菜单中选择要连接的共享流。
- 点击确定。
- 根据需要将共享流连接到其他流钩子。