使用 Altova MapForce 处理 Groupon API
我们通常将一个数据集成项目视为将一个单一的数据输入文件转换成其他数据集的过程,但Altova MapForce可以极大地扩展“输入文件”的概念。例如,MapForce安装包中提供的“MergeMultipleFiles.mfd”示例,展示了如何使用包含通配符的文件名,将多个输入文件合并成一个输出文件。
![]()
MapForce 的映射输入并不一定需要是一个实际的文件,它可以是一个 URL,该 URL 返回结构化的数据,例如像 Groupon 和许多其他网站那样,它们提供 API 接口。 在这篇博文中,我们将介绍如何使用 Altova 工具来获取、过滤、分析和呈现来自 Web API 的数据,以 Groupon 为例。 如果您想自己尝试,首先需要访问 http://www.groupon.com/pages/api,以获取您的个人 Groupon API 客户端密钥。
问题:所有交易都是本地化的
Groupon的网站和邮件订阅服务非常适合查找您所在社区的优惠活动,但如果您正在寻找用于即将到来的旅行的优惠,或者为全国各地的朋友或家人准备礼物,该怎么办? 您当然可以手动在Groupon网站上输入每个地点,但那样太落后了。 让我们使用Altova MissionKit来自动化这个过程。 Groupon的API提供了两个URL查询,它们以.json或.xml格式返回数据:第一个查询返回所有Groupon服务区域(称为“区域”)的列表,第二个查询返回指定区域的当前优惠信息。 如果我们想查看多个区域的所有优惠活动,我们需要解析多个URL并将数据汇总到一个结果中。 没错,MapForce可以做到!
首先,我们需要一个模式
Groupon 的 API 文档描述了我们的请求将返回的元素,但没有提供 XML 模式。这没关系,我们可以使用 MapForce 来生成一个。我们只需要打开一个新的映射设计,选择“插入 XML 模式/文件”,然后点击“切换到 URL”按钮。现在,我们可以输入 URL 来获取 Groupon 的分部列表:
![]()
当我们点击“打开”按钮时,MapForce会提示我们生成模式文件
![]()
当我们点击“是”后,会打开“文件/保存”对话框。我将该模式文件保存为 divisions.xsd,并且插入了新的 XML 模式后的映射关系如下所示:
![]()
并且,XML Schema 组件的“属性”对话框会自动包含 API/divisions 的 URL,并将其作为“输入 XML 文件”
![]()
检查工作
我们希望筛选 Groupon 各个部门的数据,从而构建一个包含 ID 名称的列表,用于针对每个地区的优惠活动查询。但在继续之前,现在可能是一个使用之前提到的文本文件技巧的好时机 解决复杂功能的快速方案 在博客文章中,我们可以查看 ID 值。当我们将文本文件导入并连接各个分段以及 ID 模式元素后,映射关系如下所示:
![]()
为了在文本文件中为每个唯一的部门创建一个新行,我们将“部门”字段与文本文件中的“行”关联起来。这样,每个行中的“字段1”将包含部门的ID。现在,点击“输出”按钮将生成以下结果:
![]()
我们只需要使用 `concat string 函数来构建包含所有部门 ID 对应的 "/deal" URL 的列表。下一步的映射关系如下:
![]()
将光标悬停在与 "concat" 函数的 "value1" 参数相连的变量上,会显示该变量的完整定义
![]()
当我们点击“输出”按钮来执行映射操作时,输出文件现在会显示如下内容:
![]()
为了进一步检查,我们可以打开生成的 XML Schema 文件,并在 XMLSpy 中使用图形化模式查看其内容
![]()
到目前为止,我们已经有了:
- 构建了一个 MapForce 映射,该映射会查询 Groupon API,以获取所有部门的数据
- 提取了部门ID字段
- 并且构建了一个URL列表,用于API查询,以便获取每个部门的优惠信息
在接下来的系列文章中,我们将使用一系列交易查询作为输入,为新的映射组件进行处理,并筛选输出结果,提取一些有趣的信息。 亲自体验一下,使用 MapForce 将 Web API 中的数据转换为其他格式是多么简单!
编辑语: 我们之前推出的一系列关于如何从 Groupon API 获取数据的文章,分为三个部分。您可以点击以下链接查看:第一部分 使用 Altova MapForce 处理 Groupon API 描述了如何通过从多个网址收集数据来创建动态输入。 使用 MapForce 处理 Groupon API 的方法(第二部分) 它描述了我们如何从API中筛选数据,并定义输出格式,以便只提取最重要和有趣的信息。 处理 Groupon API – 第 3 部分 它描述了如何将输出格式化为单个HTML文档,该文档针对桌面设备和移动设备进行了优化,并介绍了自动化重复执行的方法。