教程:映射 JSON 内容

本教程向您说明如何将消息内容从一种格式或模式映射到另一种格式或模式。

准备工作

分配了以下角色之一的用户可以完成该任务:
  • 目录所有者
  • 开发者
注意: 必须将沙盒目录配置为使用 DataPower® Gateway (v5 compatible)DataPower API Gateway 或两者兼用。 请参阅创建和配置目录

关于本教程

在本教程中,您将完成以下课程:

创建新 API

执行以下步骤以创建新 API。

  1. 登录 API 管理器
  2. 主页中,单击 " 开发 API 和产品 "磁贴。

    或者,点击左侧面板上的 " 显影 "图标。

    APIM 屏幕

  3. "开发 "页面,单击添加 > API

    API 添加菜单

  4. 在 " 选择 API 类型 "页面、
    1. 确保选择 OpenAPI 2.0
    2. 选择新 OpenAPI 单选按钮。
    3. 单击下一步

      新建 API

  5. 创建新的 OpenAPI 页面,输入有关 API 的以下信息。
    注: OpenAPI 版本字段已预先定义。 您无法更新此字段。
    1. 标题字段中,输入 Mapper

      名称 "字段将填入您在 " 标题 "字段中输入的值。

    2. 版本字段中,输入 1.0.0
    3. 基本路径字段中,输入 /map
    4. 单击下一步

      应用程序接口详情

  6. 安全部分下、
    1. 使用客户端 ID 确保安全CORS 复选框是按选择的。 不要取消选择复选框。
    2. 单击下一步

      安全 API

      您可以看到创建新 API 的进度。 创建 API 时,您会看到一个摘要。

  7. 摘要部分下,单击编辑 API

    新的应用程序接口摘要

    显示 API 定义草案的 " 设计 "选项卡。

  8. 在左侧面板中,单击 " 消耗 "。
  9. 在右侧面板的 " 消耗 "部分、
    1. 单击添加 +
    2. 添加模式对话框中,从 Mime Type(可选) 下拉列表中选择 application/json ,然后单击添加

      添加模式

  10. 在左侧面板中,单击 " 生产 "。
  11. 在右侧面板的 " 产品 "部分、
    1. 单击添加 +
    2. 添加模式对话框中,从 Mime Type(可选) 下拉列表中选择 application/json ,然后单击添加

      MIME 类型

  12. 在左侧面板中,单击路径
  13. 在右侧面板的路径部分、
    1. 单击添加 +
    2. 路径名字段中,输入 /jsonmap ,然后单击添加

      路径

  14. 在左侧面板中,在新建路径 (/jsonmap ) 下方的操作旁边,单击 + 图标。

    添加模式对话框将显示。

  15. 添加模式对话框中,执行以下任务。
    1. 动词(关键字)(可选) 字段中,输入 get
    2. 操作(可选) 字段中,输入 POST
    3. 单击添加

      操作领域

  16. 在左侧面板 " 参数 "旁,点击 " + "图标。

    添加模式对话框将显示。

  17. 添加模式对话框中,执行以下任务。
    1. 名称字段中,输入body
    2. 选择必填复选框。
    3. "位于 "下拉列表中,选择 body
    4. 单击添加

      主体

  18. 向下滚动到模式部分,然后单击查看
  19. 模式部分,执行以下任务。
    1. 在提交的标题(可选) 中,输入 body
    2. 类型下拉列表中选择字符串
    3. 在右上角单击 " 保存 "。

      模式

  20. 在左面板中,展开路径 > 操作 > 响应
  21. 在 " 回复 "下单击 200
  22. 在右侧面板的 200 部分,执行以下任务。
    1. 在输入的名称(密钥) 中,输入 200
    2. 描述字段中,输入 200 OK
    3. 在右上角单击 " 保存 "。

      名称和描述

映射 JSON 内容

  1. 单击网关选项卡。
  2. 将光标悬停在策略上,然后单击删除图标 “删除”图标 ,即可删除画布上的现有策略。
    注: 如果使用 DataPower API Gateway ,则该策略为调用策略;如果使用 DataPower Gateway (v5 compatible) ,则该策略为代理策略。

    政策节点

  3. 要查看调色板,请在右面板中单击加号图标 加号图标

    加号图标用于添加保单

  4. 在 " 变换 "栏下,选择地图

    地图策略节点显示在画布上。

    地图政策节点

  5. 单击地图策略节点打开配置对话框。
  6. "输入 "旁边,单击 " 编辑输入 "图标。 编辑图标

    编辑输入

  7. 单击添加输入
  8. 输入以下值,完成地图输入配置
    1. 上下文变量字段中,输入 request.body
    2. 名称字段中,输入input
    3. 内容类型下拉列表中,选择 application/json
    4. 定义下拉列表中,选择 Inline schema

      弹出 " 提供模式 " 窗口。

      弹出窗口提供模式

    5. 在弹出的 " 提供模式 " 窗口中,执行以下任务。
      1. 选择 " 从样本 JSON 生成 "选项卡。
      2. 将以下样本 JSON 粘贴到框中。
        {"order":
        {"customer":
        {"name":
        {
        "firstname":"John",
        "middlename":"Q",
        "lastname":"Smith"
        },
        "address":
        {
        "line1":"550 King St",
        "line2":"Dept 5",
        "city":"Littleton",
        "state":"MA",
        "country":"USA",
        "code":"01460"
        }
        }
        },
        "items":
        [{"item":"shoes", "color":"black", "qty":2, "price":23.50},
        {"item":"socks", "color":"argyle", "qty":2, "price":3.95},
        {"item":"pants", "color":"grey", "qty":1, "price":48.00}]
        }
      3. 单击生成

        从样本 JSON 生成

      4. 单击完成

        弹出窗口现已关闭。

    6. 地图策略配置对话框中,单击完成完成地图配置。
  9. 在 " 输出 "栏旁边,单击 " 编辑输出 "图标 编辑图标

    编辑输出

  10. 单击添加输出
  11. 输入以下值,完成地图输出配置
    1. 上下文变量字段中,输入 message.body
    2. 名称字段中,输入output
    3. 内容类型下拉列表中,选择 application/json
    4. 定义下拉列表中,选择 Inline schema

      弹出 " 提供模式 " 窗口。

      弹出模式窗口

    5. 在弹出的 " 提供模式 " 窗口中,执行以下任务。
      1. 选择 " 从样本 JSON 生成 "选项卡。
      2. 将以下样本 JSON 粘贴到框中。
        {"order":
        {
        "date":"12-12-12",
        "customer": "John Smith",
        "address":
        {
        "street":"king",
        "citystatezip":"lit MA 01469",
        "country":"USA"
        },
        "items":[{"type":"shoes", "color":"black", "qty":2, "price":23.50}]
        }
        }
      3. 单击生成

        从样本 JSON 生成

    6. 单击完成

      弹出窗口现已关闭。

    7. 地图策略配置对话框中,单击完成完成地图配置。

      地图配置

  12. 单击保存
  13. 在地图输出配置窗口的 " 输出 "栏中,执行以下任务。
    1. 选择日期单选按钮。

      配置映射对话框将显示。

      1. 在 " 配置映射 "对话框中,输入以下示例 JavaScript。

        new Date().toGMTString()

      2. 单击完成

        配置映射

    2. 输入栏下选择名字单选按钮,然后在输出栏下选择客户单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成
    3. "输入 "栏下选择 " middlename "单选按钮,然后在 " 输出 "栏下选择 " 客户 "单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成
    4. 输入栏下选择姓氏单选按钮,然后在输出栏下选择客户单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成

        配置映射

    5. 在 " 输出 "栏下,选择 " 客户 "单选按钮。

      配置映射对话框将显示。

      1. 在 " 配置映射 "对话框的字段中,输入以下示例代码。
        var name = $(input.order.customer.name.firstname) + ' '; 
          if($(input.order.customer.name.middlename)) {
          name += $(input.order.customer.name.middlename) + ' ';}
          name += $(input.order.customer.name.lastname);
          name
      2. 单击完成

        空字符串作为缺省值

    6. 输入栏下,选择地址 > line1 单选按钮,然后在输出栏下选择街道单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成
    7. 输入栏下,选择地址 > line2 单选按钮,然后在输出栏下选择街道单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成

        空字符串作为缺省值

    8. 在 " 输出 "栏下,选择街道单选按钮。

      配置映射对话框将显示。

      1. 在 " 配置映射 "对话框的字段中,输入以下示例代码。
        var street = $(input.order.customer.address.line1) + ' '; 
          if($(input.order.customer.address.line2)) {
          street += $(input.order.customer.address.line2);}
          street
      2. 单击完成

        配置映射

    9. 输入栏下选择城市单选按钮,然后在输出栏下选择城市州邮编单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成
    10. "输入 "栏下选择 " "单选按钮,然后在 " 输出 "栏下选择 " 城市州邮编 "单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成
    11. 输入栏下选择代码单选按钮,然后在输出栏下选择 citystatezip 单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成

        配置映射

    12. 在 " 输出 "栏下,选择街道单选按钮。

      配置映射对话框将显示。

      1. 在 " 配置映射 "对话框的字段中,输入以下示例代码。
        $(1) + " " + $(2) + " " + $(3)
        注意: 变量引用是位置性的;$(1) 指第一个映射值 (input.order.customer.city),以此类推。
      2. 单击完成

        空字符串作为缺省值

    13. 输入栏下,选择项目 > 项目单选按钮,然后在输出栏下,选择项目单选按钮。

      配置映射对话框将显示。

      1. 配置映射对话框中,选择空字符串作为默认值复选框。
      2. 单击完成

        配置映射

    14. 在 " 输出 "栏下,单击第二个添加属性

      添加属性

      1. 在第一个字段中,输入 total
      2. 从下拉列表中选择 float
      3. 点击 + 图标。

        浮点

    15. 输入栏下选择项目单选按钮,然后在输出栏下选择总数单选按钮。

      配置映射对话框将显示。

      1. 在 " 配置映射 "对话框的字段中,输入以下示例代码。
        $(0) + ($(input.items.price) * $(input.items.qty))

        空字符串作为缺省值

      2. 单击完成

        配置映射

    16. 在地图策略节点输出页面上,单击保存
  14. 点击来源
  15. 向下滚动并找到计算总和的代码。

    计算总数

  16. 使用代码 foreach: input.items 插入新行。

    计算调整后的总额

  17. 单击保存

测试 API 定义

注意: 由于跨源资源共享 (CORS) 限制,汇编测试工具不能在 macOS Catalina 平台上与 Chrome 或 Safari 浏览器一起使用。

要使用 API 管理器测试工具测试您的 API 定义,请完成以下步骤:

  1. 单击组装

    组装页面

  2. 单击测试图标 测试图标。 此时会打开测试工具。
  3. 单击激活 API

    测试设置

  4. 操作字段中,选择 post /jsonmap

    测试选择操作

  5. 主体字段中,输入以下 JSON 文本。
    {"order":
    {"customer":
    {"name":
    {
    "firstname":"John",
    "middlename":"Q",
    "lastname":"Smith"
    },
    "address":
    {
    "line1":"550 King St",
    "line2":"Dept 5",
    "city":"Littleton",
    "state":"MA",
    "country":"USA",
    "code":"01460"
    }
    }
    },
    "items":
    [{"item":"shoes", "color":"black", "qty":2, "price":23.50},
    {"item":"socks", "color":"argyle", "qty":2, "price":3.95},
    {"item":"pants", "color":"grey", "qty":1, "price":48.00}]
    }

    测试选择操作

  6. 单击 " 调用 "。 此时会显示响应内容。 请注意,datestreetcitystateziptotal 字段的值反映先前定义的映射公式。
    注意: 如果使用自签名证书,系统可能会提示您访问提供的 URL。 单击链接并接受证书,然后返回 API 管理器并再次单击调用

    测试成功

管理 API 定义

新的应用程序接口已按预期运行,您可以开始对其进行管理。 要查看即时选项,请执行以下步骤。

  1. 在导航面板上,单击 " 开发 "图标 编辑图标

    从导航面板开发

  2. Mapper API 旁边,单击菜单图标 选项图标 ,然后选择下载

    下载选项

您在本教程中执行的操作

  • 已创建新 API
  • 已将内容从一种 JSON 模式映射到另一种模式。