API 发现 配置 DataPower API Gateway 代理收集器

如何将 DataPower® API Gateway 代理数据源收集器添加到 API 发现 功能。

准备工作

必须先启用提供者组织分析数据共享,然后 API 发现 DataPower API Gateway 代理收集器才能从提供者组织收集数据; 请参阅 共享 API 发现的分析数据

需要下列其中一个提供者组织角色才能管理源:
  • 组织管理员
  • 所有者
  • 具有 Settings: Manage 许可权的定制角色。

关于此任务

API 发现IBM® API Connect 的附加组件,可用于发现 API 并将其添加到 API 开发过程。 必须先配置一个或多个数据源收集器,然后才能发现任何 API。 然后,当收集器将第一个 OpenAPI 文档发送到提供者组织时,会自动将这些收集器添加到 API Manager UI 中的 选项卡。

要配置 API 发现 DataPower API Gateway 代理收集器,可以在 API Connect中的提供者组织内创建代理 API 定义或更新现有代理 API。 此新代理 API 或现有代理 API 将包含要用于从中发现 OpenAPI 文档的现有 REST 服务的端点。 然后,可以根据需要将发现的 OpenAPI 文档复制到草稿 API ,以在 API Manager中启用完整生命周期管理。 如果要更新现有代理 API 定义,那么进行收集所需的最小字段是包含 invoke 策略 log 段和两个 set-variable 段,如步骤 1中的示例 YAML 中所示。

过程

要使用 API Manager UI 配置 DataPower API Gateway 代理收集器,请完成以下步骤。 您还可以使用 工具箱 CLI 来创建代理 API 定义。 有关如何使用 工具箱 CLI的常规信息,请参阅 命令行工具概述
  1. 为代理 API 定义创建 YAML 文件,如以下示例所示:
    swagger: '2.0'
    info:
      version: version
      title: title
      x-ibm-name: name
      contact:
        name: contact_name
    basePath: /
    x-ibm-configuration:
      properties:
        target-url:
          value: target_url
          description: url_description
          encoded: false
      cors:
        enabled: true
      gateway: datapower-api-gateway
      type: rest
      phase: realized
      enforced: true
      testable: true
      assembly:
        execute:
          - invoke:
              title: invoke
              version: 2.0.0
              verb: keep
              target-url: $(target-url)$(request.path)$(request.search)
              follow-redirects: false
              timeout: 60
              parameter-control:
                type: allowlist
                values: []
              header-control:
                type: blocklist
                values: []
              inject-proxy-headers: true
              persistent-connection: true
          - log:
              version: 2.1.0
              title: log
              log-level: default
              mode: gather-only
          - set-variable:
              version: 2.0.0
              title: set-variable
              actions:
                - set: log.custom_data.discoveryServiceCollection
                  value: 'true'
                  type: string
              description: Setting specific collector key
          - set-variable:
              version: 2.0.0
              title: set-variable
              actions:
                - set: log.custom_data.apiTargetURL
                  value: $(target-url)
                  type: string
              description: Setting specific collector target URL
        catch: []
        finally: []
      activity-log:
        enabled: true
        success-content: payload
        error-content: payload
      catalogs: {}
      buffering: true
    paths:
      /{+pathparam}:
        get:
          responses:
            '200':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        post:
          responses:
            '201':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        put:
          responses:
            '201':
              description: success
              schema:
                type: string
        patch:
          responses:
            '200':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        delete:
          responses:
            '204':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        parameters:
          - name: +pathparam
            in: path
            required: true
            type: string
    schemes:
      - https
    
    其中:
    • version 为 API 的版本号。
    • title 是 API 的标题。 例如,My proxy API
    • name 是 API 的名称。 name 字段的值必须是可用于在命令中标识 API 的单个字符串,例如 my-proxy-api
    • contact_name 是 API 的联系人的名称。
    • target_url 是现有REST服务的 端点,您希望公开该端点。 URL 例如,https://myorg.com/api/
    • url_description 是对目标 的描述。 URL
    • $(target-url)$(request.path)$(request.search)invoke 策略,允许在现有 REST 服务的 target_url 端点之后传递通配符路径和参数。 使用 $(request.path)$(request.search)作为 $(target-url) 的后缀,意味着由 API 用户调用的请求路径的任何数字 (1-n) 和路径参数的任何数字 (1-n) 都将由发现收集器捕获和处理,而无论它们是否未在代理 OpenAPI 模式定义中显式定义。
    • log 是支持添加定制日志的 log 策略。
    • set-variable 是 政策,其中设置了名为 的特定收藏者密钥和名为 的特定收藏者目标。 set-variable discoveryServiceCollection URL apiTargetURL 收集器使用 discoveryServiceCollection 键来过滤与代理 API 定义关联的事件的分析数据,并使用 apiTargetURL 来过滤来自不同数据源的重复调用。
    • activity-log 是一个 activity-log 策略,用于决定所发现的 OpenAPI 重构的完成程度。 将 success-contenterror-content 字段都设置为 payload 将为收集器提供足够的数据,以确保可以正确创建请求和响应模式。 您还可以将这些字段设置为 activityheader 数据,这两种情况都意味着可发现的 OpenAPI 结构较少。 请注意,收集器不会查看有效内容值,在将这些值从收集器发送到发现功能之前,会对其进行编辑。
    • paths 设置为通配符值,例如 {+pathparam},以确保代理 API 上有最大范围的可发现路径可用。 应该将 paths.parameters 节定义为相同的值。 在 paths:/{+pathparam} 属性下,可以添加 getpostpatchputdelete 的存根方法,以通过代理获取可发现的所有操作的最大访问权。
  2. API Manager UI 中登录到提供者组织。
  3. 在导航窗格中,单击 API UI 导航窗格中的 "开发" 图标 开发,然后单击 添加 > API
    这样会显示选择 API 类型屏幕。
  4. 在导入部分中,选择现有的 OpenAPI ,然后点击下一个
  5. 选择下列其中一种方法来选择 YAML 文件:
    • 拖放文件。
    • 浏览以查找文件。
    • 请指定文件的 URL。
    向导会检查 YAML 的有效性,并显示一条消息以指示验证成功。
  6. 单击 下一步 以导入所选文件。
    导入的摘要确认已创建 API 定义。
  7. 单击 编辑 API
    API 定义将在 设计 选项卡中打开。
  8. 单击 测试 选项卡以开始进行 API 发现。
    使用 请求 字段通过代理 API 传递 GETPOSTPATCHPUTDELETE 方法来查找 API 流量。 例如:
    GET https://myorg.com:9443/test/sandbox/users
    返回用户列表。
    找到 API 流量后, DataPower API Gateway 代理收集器将在 API 发现 功能中变为可用。
  9. API Manager UI 中,单击 发现 图标 发现图标是黑色背景上一对白色双筒望远镜的轮廓。,然后单击 选项卡以查看 DataPower API Gateway 代理收集器。
    源可以具有以下状态:
    • 已启用 -已启用源,并根据其配置与收集器同步。
    • 已禁用 -已禁用源, API Connect 不会接受来自收集器的任何文件。 此状态由发现服务在发现操作失败时设置。
    • 运行状况不佳 -源收集器不可用。
    • 已暂停 -源已暂停, API Connect 不会接受来自收集器的任何文件。
  10. 可选: 您可以单击源旁边的 选项 图标 选项图标是一组白色背景上的三个垂直黑点。 以更改其状态。
    • 暂停收集器 -暂停源。
    • 删除收集器 -从 API Manager UI 中删除源。 不会删除外部源文件。
    • 恢复收集器 -重新启动已暂停或已禁用的源。
  11. 可选: 您可以单击表标题上的 管理列 图标 "管理列" 图标是白色背景上黑色轮的轮廓。 以更改列的顺序和视图。

结果

DataPower API Gateway 代理数据源收集器现在已准备好进行 API 流量发现。 当发出手动测试请求时,或者当向用户提供代理 API 时,收集器会将更新发布到 API Connect ,以便与可在代理的 target_url 后面的可用路径上访问的应用程序进行交互。 每次发现和处理 API 定义时,都会更改数据源的 上次运行时间 字段以反映活动。

后续操作

您可以单击 API Manager UI 的 发现 部分中的 API 选项卡,并查看数据源收集器中的 API 流量。 有关更多信息,请参阅 查看发现的 API