创建可重复使用的共享流

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

将政策和资源组合成可从多个 API 代理(甚至是从其他共享流)使用的共享流。共享流与代理类似,但没有端点。共享流只能通过与它本身位于同一组织的 API 代理或共享流使用。

通过集中捕获可在多个位置使用的功能,共享流有助于确保一致性、缩短开发时间以及更轻松地管理代码。

以下视频演示了如何在 Apigee 界面中创建和调试共享流。

您可以使用 FlowCallout 政策调用共享流。此外,通过将共享流连接到流钩子,您可以在执行代理或目标请求之前或在执行代理或目标响应之后执行共享流。

如需了解 FlowCallout 政策,请参阅 FlowCallout 政策。如需详细了解流钩子,请参阅使用流钩子连接共享流

例如,假设您的某项功能的多个部分在多个位置使用,或必须在整个组织中的各个 API 中进行标准化,则您可以针对每个类别提供一个共享流,包括:

  • Security,其中包含授权码(使用 OAuth 和 API 密钥验证)以及威胁防护代码。
  • Logging,用于生成标准错误消息。
  • Mediation,用于转换 XML 和 JSON 消息格式。

在下图中,两个 API 代理(使用 FlowCallout 政策)对共享流进行调用,以对传入的用户请求进行身份验证。在部署代理之前,AuthSharedFlow 已单独部署到组织以便支持来自代理的请求。共享流可由负责制定公司广泛政策的团队来开发和管理,然后由构建更专业的应用的业务线团队在代理中使用。

显示 POST /foods 政策至 POST /menus 至 AuthSharedFlow 的流程图。标注文字:
a) 多个 API 代理通过 FlowCallouts 使用共享流。b) FlowCallout 政策从 API 代理调用共享流。c) 共享流软件包包含可重复使用的逻辑作为政策和资源。

开发共享流

开发共享流时,您必须始终使用发送到 API 代理的调用对其进行测试。换句话说,您不能像处理 API 代理那样将请求直接发送到共享流。您可以改为向 API 代理发送请求,而 API 代理又会调用共享流。

以下是开发共享流的简要步骤:

  1. 找出哪些功能应该为一组共享功能

    例如,您可能需要组合流量管理功能,包括抑制流量峰值。这样,您便可以在实现业务线逻辑的工作流之外管理其配置。

  2. 通过实现政策和支持资源来开发共享流,就像您在开发 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>

    如需了解如何在管理控制台中开始共享流,请参阅在 Apigee 界面中创建共享流

    与 API 代理一样,您可以使用创建共享流 API 导入包含共享流源工件的 zip 文件。以下演示了如何使用 Apigee API 导入共享流:

    curl "https://apigee.googleapis.com/v1/organizations/$ORG/sharedflows?action=import&sharedFlowID=mySharedFlow" \
      -X POST \
      -F "file=@sharedflow.zip" \
      -H "Authorization: Bearer $TOKEN"

    按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解所使用的环境变量,请参阅为 Apigee API 请求设置环境变量

  3. 首先在环境中部署共享流,然后再部署将使用该该共享流的代理或共享流。部署共享流的方式与部署 API 代理的方式相同。(如需了解详情,请参阅部署概览。)

    共享流必须位于同一组织中,并部署到使用它的 API 代理和其他共享流的同一环境中。在部署代理前先部署共享流,以便可以在部署时解决代理对共享流的依赖。

    您可以使用如下所示的 Apigee API 调用来部署共享流:

    curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/sharedflows/$SHAREDFLOW/revisions/$REV/deployments \
      -X POST \
      -H "Authorization: Bearer $TOKEN"

    与 API 代理类似,所有成功部署到 Apigee 的共享流部署都是零停机时间部署

  4. 开发使用方 API 代理,以便它在自己的流程中调用共享流。

    通过 API 代理,您可以使用 FlowCallout 政策来调用共享流。(您也可以使用流钩子将共享流附加到代理。)

    如需使用共享流,请将 FlowCallout 政策添加到将使用它的代理或共享流。与 ServiceCallout 政策一样,当您使用 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 代理或共享流调用共享流

  5. 部署使用方 API 代理以开始使用共享流。(如需详细了解一般部署,请参阅部署概览。)
  6. 与处理 API 代理一样,通过跟踪进行迭代式开发

    与处理 API 代理一样,您可以通过迭代调用和跟踪来开发共享流,直到达成您想要的逻辑为止。在这种情况下,由于共享流本身不会运行,因此您需要调用代理端点并调试代理。

    具体步骤如下所示:

    1. 确保共享流和使用 FlowCallout 政策调用它的 API 代理位于同一组织中,并部署到同一环境中。
    2. 在 API 代理的跟踪记录标签页上,开始跟踪 API 代理。
    3. 向 API 代理中的代理端点发送请求。来自代理端点的流必须包含用于调用共享流的 FlowCallout 政策。
    4. 跟踪记录标签页上,检查从 API 代理到共享流的流。

      请注意,在跟踪记录中,共享流表示为一组包含在灰色框中的步骤或政策。表示 FlowCallout 政策的图标位于共享流之前。(如需详细了解跟踪,请参阅调试工具。)

      事务示意图。标注文字:
a) FlowCallout 政策调用共享流。b) 共享流包括 SpikeArrest 政策和 FlowCallout 政策。FlowCallout 政策使用 VerifyAPIKey 政策调用另一个共享流。

在 Apigee 界面中创建共享流

使用 Apigee 界面创建共享流时,可以从头开始创建共享流,也可以采用共享流软件包 .zip 文件形式导入现有共享流源。

访问共享流页面,如下所述。在共享流页面上,您可以查看组织中共享流的列表,还可以修改或删除列表中的共享流。

如需在 Apigee 界面中创建共享流,请执行以下操作:

  1. 登录 Apigee 界面
  2. 选择包含共享流的组织。请参阅在组织之间切换

    共享流将可供从该组织部署到环境的任何 API 代理和共享流使用。此组织以外的 API 代理和共享流将无法使用该共享流。

  3. 在左侧导航栏中选择开发 > 共享流
  4. 创建或上传共享流:
    • 点击新建以从头开始创建新流。您可以按照流中的步骤配置政策和资源。

      此时会显示创建共享流对话框。

      1. 输入共享流的名称。

        这是 API 代理和其他共享流用于引用此共享流的名称。该名称应具有描述性,能够描述使用此流的开发者。

      2. 输入说明以详细了解流的作用。
      3. 点击创建

        系统便会创建共享流。

      4. 接下来,您可以开发共享流功能并将其部署到所需的环境。
    • 点击上传软件包以通过上传流软件包来根据现有来源创建共享流。

      共享流软件包包含共享流的源工件。例如,如果您想要从 Apigee 界面下载共享流,则必须拥有一个包含流软件包的 zip 文件。

      此时会显示创建共享流对话框。

      1. 选择要包含新流中所需工件的 .zip 文件。
      2. 点击打开
      3. 为导入的共享流输入名称。

        该名称是 API 代理和其他共享流用于引用此共享流的名称。名称应该具有描述性,能够描述使用此流的开发者。

      4. 点击创建

        系统便会从软件包创建共享流。

      5. 接下来,您可以开发共享流功能并将其部署到所需的环境。

从 API 代理或共享流调用共享流

您可以使用 FlowCallout 政策从代理或其他共享流调用共享流。

  1. 在 Apigee 界面中,打开要从中调用共享流的 API 代理或共享流。
  2. 点击开发标签页。
  3. 导航器中,点击政策旁边的 +
  4. 在政策列表中,点击扩展下的 FlowCallout
  5. 输入显示名和名称(唯一标识符),然后选择此政策将要调用的共享流。
  6. 点击添加
  7. 将新的 FlowCallout 政策添加到您要在其中进行调用的代理。

另请参阅

将 API 代理连接到一起