---
title: "数据映射 REST Web 服务"
date: "2016-02-24"
categories: 
  - "data-integration"
  - "json"
  - "tools"
tags: 
  - "data-mapping"
  - "gps-apps"
  - "mapforce"
  - "rest-web-services"
  - "xmlspy"
description: 探索MapForce 2016如何增强REST Web服务，用于数据映射，从而实现XML和JSON响应在您项目中的无缝集成。
---
Status: #blog

Tags:  #data-mapping #gps-apps #mapforce #rest-web-services #xmlspy

Categories: [data-integration](/blog/zh/category/data-integration.md) | [json](/blog/zh/category/json.md) | [xml](/blog/zh/category/xml.md)
# 数据映射 REST Web 服务

MapForce 2016 第二版包含了增强的[Web服务数据映射](https://www.altova.com/zh/mapforce.html#data_integration)功能，为REST Web服务提供了强大的支持。MapForce 可以接受 XML 或 JSON 作为 Web 服务的响应，允许定义参数，并支持自定义 HTTP 头部。用户可以手动定义 Web 服务接口，也可以从 WADL 文件或 URL 导入设置。手动定义 REST Web 服务设置允许开发人员基于模板 URL 创建设置。当开发人员在 Web 浏览器窗口中测试和完善 REST 调用时，这非常方便，因为 URL 可以从浏览器复制并作为模板使用。

![REST Web服务可以作为数据映射项目的信息传输通道](/blog/images/shutterstock_88166515.jpg)

<!--more-->

我们之前曾指出，GPS系统捕获的坐标非常精确，但[海拔数据却以其不准确性而闻名](https://www.altova.com/blog/rest-services-as-data-sources-for-mobile-apps/) 美国地质调查局（USGS）提供一个REST Web服务，该服务接受包含经度和纬度的查询，并提供准确的海拔数据，数据格式可以是XML或JSON。 我们可以利用这个Web服务，在MapForce的数据映射过程中，更新来自Garmin设备的GPS数据，并同时将数据格式从XML转换为JSON。

我们将首先在浏览器窗口中测试该Web服务。以下显示的URL会打开一个输入表单，用于生成一个示例查询：

![用于查询单个高程点的输入表单](/blog/images/PointQueryInputCapture_clip.png)

当我们点击“获取海拔”按钮时，该表单会生成一个完整的 REST GET 请求，并将其提交，然后在下方显示结果。我们可以利用这个结果来模拟我们数据映射的响应。

![以JSON格式返回的点查询结果](/blog/images/PointQueryResultCapture.png)

我们将通过点击“地图力”工具栏中的“插入Web服务功能”按钮，将Web服务添加到我们的地图中。这将打开“Web服务调用设置”对话框，我们可以在其中提供美国地质调查局（USGS）服务的URL地址。

![MapForce REST Web Services 对话框的某一部分，用于指定服务 URL](/blog/images/drop-in-service-def-from-dialog.png)

接下来，我们需要定义请求参数和响应内容，这些将构成映射关系中的元素，具体内容将在“调用设置”对话框的下一部分中展示。

![MapForce REST Web Services 对话框的某一部分，用于定义请求和响应的结构](/blog/images/ws-response-structure.png)

我们使用 XMLSpy 软件，根据从浏览器窗口保存的 JSON 数据示例文件，方便地生成了一个 JSON Schema，用于定义响应格式。以下是 XMLSpy 软件中转换后的响应数据的 Schema 视图：

![XMLSpy 中 JSON 模式视图，用于显示查询响应的 JSON 模式](/blog/images/json_query_result_Capture_alt.png)

美国地质调查局（USGS）的标高数据输入表提供了我们所需的所有信息，以便定义输入参数。因此，我们可以将这些参数添加到“通话设置”对话框的下一部分

![MapForce REST Web Services 对话框的某一部分，用于指定查询的输入参数](/blog/images/input-parameters.png)

在执行过程中，每个请求的单位和输出值不会改变，我们本来可以指定固定的值。但为了方便，我们会在映射关系中以常量形式提供这些值。所有必要的安全设置也会在“调用设置”对话框中进行配置。当我们点击“确定”关闭对话框后，该Web服务功能将被添加到映射关系中。

![将美国地质调查局（USGS）的 elevation (海拔) 查询功能集成到 MapForce 数据映射设计中](/blog/images/bare-WS-in-mapping-Capture.png)

源 GPX 文件中的每个轨迹点都会提供一组坐标。在地图绘制过程中，每次处理一个轨迹点时，系统都会向美国地质调查局 (USGS) 发送一个 Web Services GET 请求，并将返回的数据用于替换原始的 elevation (海拔) 数据。

现在，我们只需要将请求和响应中的各个元素连接到输入和输出组件，就像下面所示。在左上角可以看到单位和输出类型的常量，并且在将海拔值插入输出之前，会将该值四舍五入到两位小数。

![在MapForce数据映射设计中，利用美国地质调查局（USGS）的 elevation（海拔）查询功能，并连接输入和输出](/blog/images/Mapped_ws_Capture.png)

请注意，输出结果是一个 JSON 文件。虽然在这个映射的局部视图中没有显示输入组件，但它实际上是一个标准的 GPX 文件，格式为 XML。从左侧进入并穿过图中 Web 服务功能的连接线，最终连接到输出组件，这些连接线所代表的值，都将从 XML 输入文件原样复制到相应的 JSON 元素中，不会进行任何修改。

当我们点击“MapForce 输出”按钮时，映射过程会执行，并会生成一个 JSON 文件，就像这里显示的预览图所示：

![MapForce 数据映射输出结果的局部视图，以 JSON 文件格式呈现](/blog/images/json_output_Capture.png)

在生产环境中，我们可以将映射关系保存为 MapForce 执行文件，以便 MapForce Server 能够自动处理这些文件，可以通过命令行或者在 FlowForce Server 的控制下进行。

[Altova MapForce](https://www.altova.com/zh/mapforce.html) 是一款屡获殊荣的图形化数据映射、转换和集成工具，能够将各种格式的数据（包括 XML、数据库、EDI、XBRL、文本文件、Excel、JSON 以及 Web 服务）进行互联互通。
[立即下载完整功能的免费试用版，亲自体验一下！](https://www.altova.com/zh/download-trial.html)
