内容


通过 Node-RED 创建 REST API 并使用 API Connect 进行发布

通过 Watson IoT Platform 轻松连接物联网设备

Comments

通过 Node RED 服务,您可以在 Watson IoT Platform 上轻松连接物联网设备。它为何能如此简单?Node-RED 提供了具有可编程按钮的 GUI。只需轻点几下鼠标即可创建 REST API 和所有业务逻辑。掌握 JavaScript 基础知识后,您即可执行大量必要的应用逻辑,比如,从物联网设备收集数据并在 Node-RED 中处理这些值。

在 Node-RED 中完成应用程序后,我们就可以进行发布,并使用 API Connect 提供更高级别的 REST API 功能。API Connect 可提供以下功能:

  • 对 API 进行分类
  • 对 API 施加某些限制
  • 允许识别 API 上的不同角色
  • 允许一起管理不同的 Web 服务
  • 允许 API 版本控制

以下是 API Connect UI 的截屏:

API Connect
API Connect

学习目标

本教程将展示如何:

  • 将设备从 Watson Internet of Things Platform 连接到 Node-RED
  • 使用 Node-RED 对数据库执行插入操作
  • 使用 Node-RED 创建 REST API
  • 通过 API Connect 提供 Node-RED REST API

前提条件

为使用此操作指南,读者需满足以下前提条件:

预估时间

  • Watson IoT Platform 的设置大约需要 10 分钟
  • Node-RED 的设置大约需要 10 分钟
  • API Connect 的设置大约需要 10 分钟
  • 了解如何将 Node-RED 与 API Connect 配合使用大约需要 15 分钟

步骤

创建 Node-RED 流

部署 Node-RED 流的最简单方法是导入一个 JSON 文件,此文件包含传送至 Node-RED 面板的流。但首先,我们需要安装一些程序包。在创建 Node-RED 实例后,我们先尝试将节点安装到面板中。您可使用“Manage Palette”按钮来安装节点。

Manage Palette
Manage Palette

单击“Manage Palette”按钮时,首先会进入“Install”部分,搜索“watson”。然后安装 node-red-contrib-ibm-watson-iotnode-red-contrib-ibm-wiotp-devices-ops 程序包。

Watson
Watson

现在即可将流导入编辑器中。下载 [allFlows.json](static/allFlows.json) 文件,并将此文件内容复制到剪贴板,然后打开 Node-RED 面板。您将在右上角的侧边栏包菜单下找到导入部分。单击剪贴板按钮,从 JSON 文件导入所有流。

导入流
导入流

在继续操作之前,我们将删除 Flow 1,双击 Flow 1 选项卡,并使用“Delete”按钮将其移除。

删除流
删除流

在继续操作前,我们需要根据服务凭证来配置物联网节点。如果您不确定如何为物联网服务创建 API 密钥和令牌,可阅读此操作指南,了解如何进行操作。

创建服务凭证后,您需要打开其中一个物联网节点,并使用这些值对其进行配置。以下截屏作为示例可供参阅。

iot-config
iot-config

如果尚未设置身份验证方法,确保将其设置为 `API Key`。然后单击 API Key 部分旁的画笔图标,并输入您的 API 密钥和令牌。输入这些凭证后,将会正确配置所有物联网节点。

iot-config-2
iot-config-2

现在,让我们深入了解每个流的详细信息。编辑器中有四种不同的流:

  • 在 Mock Data to Watson 流中,您使用函数来模拟数据而不是真实的物联网设备,然后将其发布至 Watson IoT Platform。
  • 在 Data From Watson IoT 流中,您连接到 Watson IoT 以读取 Node-RED 上的传感器数据。
  • 在 Watson IoT to Database 流中,您将数据库添加到第二个流。
  • 在 REST API 流中,您打开自己的应用程序数据库作为 REST API。

深入分析 Node-RED 流

Mock Data to Watson

在此流中,我们使用 API 密钥身份验证方法与 IoT Platform 进行通信。利用此方法,您可连接至任意 IoT Platform,即使它位于您的 IBM Cloud 空间外也可以。

Data From Watson IoT

在此流中,我们要订阅来自 Watson IoT Platform 的数据。就像上一步一样,我们可以使用 API 密钥。

Watson IoT to Database

此流与上一个流的唯一区别在于数据库部分。在这里,我们可使用创建 Node-RED 实例时所创建的现有 Cloudant 数据库,也可以连接至外部数据库。对于本操作指南,我们将使用现有 Cloudant 数据库。

REST API

在此流中,我们会看到 HTTP 输入按钮,它用于创建 HTTP 端点(用于创建 Web 服务)和 HTTP 输出(用于为 Web 服务创建响应)。获取 /sensor-data API 的请求时,我们使用数据库按钮从数据库获取所有传感器信息,然后通过 HTTP 响应按钮提供此数据。

测试 Node-RED

完成配置后,我们现在需要对一切进行测试。单击位于右上角的红色“Deploy”按钮。此时不应显示任何错误,但如果出现意外错误,您可从调试页面中查看,此页面位于编辑器右半部分的“Info”部分旁。如果没有任何错误,单击 Interval 按钮旁的小方块,这样将启动调试页面。以下截屏作为示例可供参阅,您的调试器中的值将会有所不同。

Interval
Interval

此时,我们可以将消息成功发送至 IoT Platform,并从 Node-RED 成功读取该消息。只需这样点击一次,您就完成了对以下这三个流进行的测试:“Mock Data to Watson IoT”、“Data From Watson IoT”和“Watson IoT to Database”。现在,我们需要测试 REST API 流。将 Node-RED 实例 URL 复制到浏览器中,并在其末尾添加 /sensor-data。URL 应该类似如下:cagataytanyildiz.mybluemix.net/sensor-data。预计将会看到来自数据库的 JSON blob。如果一切都正确无误,我们即可进入以下 API Connect 部分。

使用 API Connect 配置目录

API Connect 具有一个用于公开收集、创建和提供 API 的层次结构。参阅下图来了解 API Connect 的构造方式。对于本操作指南,我们将重点关注通过“目录”来提供 API。

API Connect 层次结构
API Connect 层次结构

让我们从 IBM Cloud 仪表板启动 API Connect 实例。

api-1
api-1

使用位于 Dashboard 按钮旁的 >> 按钮启动 API Connect UI 后,转至 Drafts 并选择 API 选项卡。

api-2
api-2

单击 ADD 按钮,但在创建 API 前,展开 Additional Properties,并针对 Security 部分下的 Identify Using 选择 None

apinew
apinew

完成后,转至 Paths 部分,并为 Web 服务添加新的 /sensor-data 路径。

路径
路径

现在,我们需要将 Web 服务绑定到 API。为此,转至 Assemble 部分,并单击 invoke 图。单击 invoke 图时, 需要输入 Web 服务 URL(例如, https://cagataytanyildiz-node-red.mybluemix.net/sensor-data),并选择 请求类型,对于此场景为 GET。最后,将 Cache Type 设置为 No Cache

invoke
invoke

将服务添加至 API 后,需要对 API 设计进行保存 (Save) 和验证 (Validate)。单击页面右侧的 Save 按钮。收到成功消息后,单击 Save 按钮旁的 Validate 按钮。此部分中不应出现任何错误消息。准备好 API 后,我们还需要准备 Product。返回 Drafts 页面,但这次将添加 Product

product-2
product-2
product-1
product-1

Product 提供名称和标题。完成后,单击位于页面右侧的 Save 按钮。然后进入 Design 部分,先单击 Save 按钮,再单击 Validate 按钮。此部分中不应出现任何错误消息。

现在,我们需要将 API 添加到 Product 中。转至目录,单击新创建的产品。浏览至 API 部分,将您的产品与 API 绑定。要完成此操作,可单击 API 部分右上角的 Add API 按钮,并选择已保存的 API。

productapi
productapi

然后,单击 Save 按钮,再单击 Stage 按钮。此处将需要几分钟的时间。完成后,我们可以进入 Dashboard 发布该产品。要执行此操作,可单击 >> 按钮并选择 Dashboard,然后选择 Sandbox 目录。现在,选中就绪产品,并使用三个点菜单项发布该产品。

pubprod
pubprod

测试 API Connect 配置

我们现在可以对自己的 API 进行测试。通过 Drafts 部分返回 API Page,并打开 Assemble 部分。单击搜索栏旁的播放按钮。

重新发布
重新发布

您应该能够在 Operation 下拉列表下看到自己的路径。选择 GET 操作。返回的状态码应为 200 OK,这表明一切都已成功完成。恭喜!

故障排除

  • 看到 -1 错误?请确保您已在 API Connect 目录中发布了自己的产品。
cors
cors

结束语

通过使用 API Connect 和 Node-RED,只需少量编码,甚至无需编码,我们就可以轻松发布使用 Watson IoT Platform 的应用程序。此外,还可以使用 API Connect 将不同服务连接在一起,而不只是 Node-RED 或 Watson IoT Platform。我们鼓励读者继续阅读有关 API Connect 和 Node-Red 服务的更多信息。

相关资源

要了解有关 Node-RED 和 API Connect 的更多信息,可查看下列资源:

本文翻译自:Create REST APIs with Node-RED and publish them with API Connect(2018-01-02)


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=物联网
ArticleID=1065403
ArticleTitle=通过 Node-RED 创建 REST API 并使用 API Connect 进行发布
publish-date=04092019