步骤 2. 创建 API现在,您将设计两个 API,支持可视化应用程序检索其数据。第一个 API 将会检索可用传感器的列表,第二个 API 将会从特定传感器中检索数据。此表提供了这些 API 的规范:
URL参数描述 /sensors 无参数 返回所有传感器的 JSON 列表。例如:
[
{"name":"BramPlantSensor"},
{"name":"KaiPlantSensor"},
{"name":"KaisGrove"},
{"name":"TheGruPi"},
{"name":"TheGruSensor"}
]
/sensors/{sensor}/history
返回包含指定的 {sensor} 的传感器读数的一个 CSV 列表。默认情况下,结果被限制为过去 14 天内的值,但可以重写该值。
历史 API 将会返回一个包含传感器读数的历史记录的 CSV 列,这些传感器读数中包含时间戳、温度、湿度和压力水平。
例如:
timestamp,temperature,moisture,pressure
2014-10-26T22:14:42.733658,21.14,304,1022.69
2014-10-26T23:44:47.624428,20.74,372,1022.16
2014-10-27T00:44:50.906463,20.63,380,1021.98
2014-10-27T01:14:52.528547,20.5,335,1022.1
2014-10-27T02:14:55.786745,20.39,343,1022.29
2014-10-27T04:45:03.834080,20.1,271,1022.58
2014-10-27T05:45:07.169473,20.87,323,1022.74
sensor 传感器的名称(惟一 ID)
days 可选参数。要返回的传感器读数的天数
使用 Node-RED 实现 API:
- 打开 DevOps Services 存储库并将 /Tutorial3/Node-red/API_cloudant_proxy_flow.json 文件的内容复制到剪贴板中。
- 浏览到 Bluemix 应用程序的公共页面并单击 Go to your Node-RED flow editor。
- 单击 + 创建一个新的工作表,双击该选项卡,并将工作表重命名为 REST API。
- 从菜单中选择 Import > Clipboard,粘贴代码,单击 Ok,并将代理流程放置在您的工作表上的某个地方。
- 单击节点中的每个 "HTTP in"(Sensor History 和 Sensor List)来查看它在 info 选项卡中的配置。
- 编辑两个 Convert To Cloudant URL 功能节点(双击该节点),并更改 cloudantHost 变量,使之与您的 Cloudant 实例相匹配。
- 更新 Cloudant GET 节点,以便使用基本的身份验证:
- 保留 URL 字段为空(该 URL 是由以前的节点提供的)。
- 选择 Use basic authentication? 复选框。
- 对于 Username,可以输入您的 Cloudant 实例的名称。
- 对于 Password,可以输入您的 Cloudant 实例的密码。
- Add CORS Header 节点将 Access-Control-Allow-Origin HTTP 标头添加到了 REST 调用的 HTTP 响应中。此标头支持 ,所以可以在与托管 API 的域不同的域中,从 Web 页面调用 API。
浏览 Add CORS Header 功能节点和 HTTP Response 节点的属性。 - 单击 Deploy 来激活此代理流程。
- 通过浏览到 http://poseidon_host/sensors(例如,http://poseidon.mybluemix.net/sensors)来测试 list-sensors API。您会收到传感器的 JSON 列表。
- 通过浏览到 http://poseidon_host/sensors/sensor_id/history(例如,http://poseidon.mybluemix.net/sensors/BramPlantSensor/history)来测试 retrieve-history API。您将收到传感器值的 CSV 列表。
您的开放数据 API 已经为使用做好了准备,且无需身份验证。 |