您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。信息
您可以将政策和资源组合为一个共享流,以便可以通过多个 API 代理甚至是其他共享流使用。共享流与代理类似,但没有端点。共享流只能通过与它本身位于同一组织的 API 代理或共享流使用。
通过集中捕获可在多个位置使用的功能,共享流有助于确保一致性、缩短开发时间以及更轻松地管理代码。
以下视频演示了如何在 Edge 界面中创建和跟踪共享流。
以下 5 分钟的视频演示了如何在经典版 Edge 界面(仅限 Edge for Private Cloud)中创建和跟踪共享流。
您可以使用 FlowCallout 政策调用共享流。此外,通过将共享流连接到流钩子,您可以在执行代理或目标请求之前或在执行代理或目标响应之后执行共享流。
有关 FlowCallout 政策的参考信息,请参阅 FlowCallout 政策。如需详细了解流钩子,请参阅使用流钩子连接共享流。
例如,假设您的某项功能的多个部分在多个位置使用,或必须在整个组织中的各个 API 中进行标准化,则您可以针对每个类别提供一个共享流,包括:
- security,其中包含授权码(使用 OAuth 和 API 密钥验证)以及威胁防护代码。
- logging,用于生成标准错误消息。
- mediation,用于转换 XML 和 JSON 消息格式。
在下图中,两个 API 代理(使用 FlowCallout 政策)调用一个共享流,以对传入的用户请求进行身份验证。在部署代理之前,AuthSharedFlow 已单独部署到组织以便支持来自代理的请求。共享流可由负责制定公司广泛政策的团队来开发和管理,然后由构建更专业的应用的业务线团队在代理中使用。
开发共享流
开发共享流时,您必须始终使用发送到 API 代理的调用对其进行测试。换句话说,您不能像处理 API 代理那样将请求直接发送到共享流。您可以改为向 API 代理发送请求,而 API 代理又会调用共享流。
以下是开发共享流的简要步骤:
- 找出哪些功能应该为一组共享功能。
例如,您可能需要组合流量管理功能,包括抑制流量峰值。这样,您便可以在实现业务线逻辑的工作流之外管理其配置。
- 通过实现政策和支持资源来开发共享流,就像您在开发 API 代理时执行的操作一样。
共享流是一系列条件步骤。因此,开发共享流就像开发 API 代理一样。您可以添加可以包含在代理中的政策和资源。
例如,您可以在流量管理支持中实现 Spike Arrest 政策以仅允许每秒 30 个请求,如以下示例所示:
<SpikeArrest async="false" continueOnError="false" enabled="true" name="Spike-Arrest"> <DisplayName>Spike Arrest</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <MessageWeight ref="request.header.weight"/> <Rate>30ps</Rate> </SpikeArrest>
然后,您可以将 Spike Arrest 政策作为步骤连接到进行流量管理的共享流中。调用共享流的所有 API 代理都将执行该政策。
<SharedFlow name="default"> <Step> <Name>Spike-Arrest</Name> </Step> </SharedFlow>
如需了解如何在管理控制台中开始共享流,请参阅在 Edge 界面中创建共享流。
与 API 代理一样,您可以导入包含共享流源工件的 zip 文件(如需详细了解如何导入代理,请参阅导入新的 API 代理)。以下演示了如何使用管理 API 导入共享流:
curl -X POST -F "file=@/path/to/zip/file.zip" \ 'https://api.enterprise.apigee.com/v1/o/{org_name}/sharedflows?action=import&name=shared-flow-name' \ -u email:password
-
首先在环境中部署共享流,然后再部署将使用该该共享流的代理或共享流。部署共享流的方式与部署 API 代理的方式相同。(如需了解详情,请参阅部署概览。)
共享流必须与使用它的 API 代理和其他共享流位于同一组织并部署在同一环境中。在部署代理前先部署共享流,以便可以在部署时解决代理对共享流的依赖。
您可以使用如下所示的管理 API 调用来部署共享流:
curl -X POST --header "Content-Type: application/octet-stream" \ https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/sharedflows/{shared_flow_name}/revisions/{revision_number}/deployments \ -u email:password
您也可以在不停机的情况下替换当前部署的共享流。(这一点与 API 代理非常类似。如需了解详情,请参阅使用管理 API 部署 API 代理。以下是使用管理 API 的请求表单:
curl -X POST --header "Content-Type:application/x-www-form-urlencoded" \ https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/sharedflows/{shared_flow_name}/revisions/{revision_number}/deployments?"override=true" \ -u email:password
-
开发使用方 API 代理,以便它在自己的流程中调用共享流。
通过 API 代理,您可以使用 FlowCallout 政策来调用共享流。(您还可以使用流钩子将共享流连接到代理,如使用流钩子连接共享流中所述。)有关如何创建 API 代理的入门教程,请参阅构建首个 API 代理。
如需使用共享流,请将 FlowCallout 政策添加到将使用它的代理或共享流。与 ServiceCallout 政策一样,当您使用 FlowCallout 政策调用其他服务时,FlowCallout 会调用共享流。使用方 API 代理必须在部署共享流之后再部署到共享流所在的环境中。如果您希望使用 FlowCallout 政策测试对共享流的调用,则必须设置共享流。
在以下代码中,FlowCallout 政策会调用名为
traffic-management-shared
的共享流。<FlowCallout async="false" continueOnError="false" enabled="true" name="Traffic-Management-Flow-Callout"> <DisplayName>Traffic Management FlowCallout</DisplayName> <Properties/> <SharedFlowBundle>traffic-management-shared</SharedFlowBundle> </FlowCallout>
如需了解详情,请参阅从 API 代理或共享流调用共享流
- 部署使用方 API 代理以开始使用共享流。(如需详细了解一般部署,请参阅了解部署。)
- 与处理 API 代理一样,通过跟踪进行迭代式开发。
与处理 API 代理一样,您可以通过迭代调用和跟踪来开发共享流,直到达成您想要的逻辑为止。在这种情况下,由于共享流本身不会运行,因此您需要调用代理端点并跟踪代理。
具体步骤如下所示:
- 请确保使用 FlowCallout 政策调用共享流的共享流和 API 代理位于同一组织且部署在同一环境中。
- 在 API 代理的跟踪记录标签页上,开始跟踪 API 代理。
- 向 API 代理中的代理端点发送请求。来自代理端点的流必须包含用于调用共享流的 FlowCallout 政策。
- 在跟踪记录标签页上,检查从 API 代理到共享流的流。
请注意,在跟踪记录中,共享流表示为一组包含在灰色框中的步骤或政策。表示 FlowCallout 政策的图标位于共享流之前。(如需详细了解跟踪,请参阅使用 Trace 工具。)
在 Edge 界面中创建共享流
使用 Apigee Edge 界面创建共享流时,可以从头开始创建共享流,也可以采用共享流软件包 .zip 文件形式导入现有共享流源。
- 访问“共享流”页面,如下所述。在“共享流”页面上,您可以查看组织中共享流的列表,还可以修改或删除列表中的共享流。
Edge
如需使用 Edge 界面访问“共享流”页面,请执行以下操作:
- 登录 apigee.com/edge。
- 选择包含共享流的组织。请参阅在组织之间切换。
共享流将可供从该组织部署到环境的任何 API 代理和共享流使用。此组织以外的 API 代理和共享流将无法使用该共享流。
- 在左侧导航栏中选择开发 > 共享流。
传统边缘(私有云)
如需使用经典 Edge 界面访问“共享流”页面,请执行以下操作:
- 登录
http://ms-ip:9000
,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。 - 选择包含共享流的组织。请参阅在组织之间切换。
共享流将可供从该组织部署到环境的任何 API 代理和共享流使用。此组织以外的 API 代理和共享流将无法使用该共享流。
- 在顶部导航栏中依次选择 API > 共享流。
- 点击添加共享流按钮,开始添加新的共享流。
- 在构建共享流页面上,选择如何创建新的流:
- 从头开始创建新的流。您可以按照流中的步骤配置政策和资源。
- 选择清空共享流。
- 输入名称值。该名称是 API 代理和其他共享流用于引用此共享流的名称。名称应该具有描述性,能够描述使用此流的开发者。
- 输入说明以详细了解流的作用。
- 点击下一步。
- (可选)选择要部署新流的环境。
例如,如果您要测试从 API 代理部署到测试环境的共享流,然后将共享流部署到测试。
-
请点击构建和部署,以在所选环境中创建和部署新的共享流。如果未选择环境,则系统将创建共享流,但不会部署。
- 通过上传流软件包从现有源创建共享流。
- 选择共享流软件包以指定包含新流中所需工件的 .zip 文件。
共享流软件包包含共享流的源工件。例如,如果您要从 Edge 界面下载共享流,则会获得包含流软件包的 .zip 文件。
- 点击下一步。
- 点击选择文件以浏览包含您要导入的共享流源的 .zip 文件。
- 在共享流名称框中,输入导入的共享流的名称。该名称是 API 代理和其他共享流用于引用此共享流的名称。名称应该具有描述性,能够描述使用此流的开发者。
- 点击下一步。
- 点击构建以从导入源构建新的流。
- 选择共享流软件包以指定包含新流中所需工件的 .zip 文件。
- 从头开始创建新的流。您可以按照流中的步骤配置政策和资源。
从 API 代理或共享流调用共享流
您可以使用 FlowCallout 政策从代理或其他共享流调用共享流。
- 在 Edge 界面中,找到您要从中调用另一个共享流的代理或共享流。
- 在导航器中,点击政策旁边的 + 按钮。
- 在政策列表中,点击扩展下的 FlowCallout。
- 输入显示名和名称(唯一标识符),然后选择此政策将要调用的共享流。
- 点击添加。
- 将新的 FlowCallout 政策添加到您要进行调用的代理。