IoT Studio 公开API 攻略

简介: IoT Studio提供了制作公开API的功能。通过公开API,无需AppKey与AppSecret的鉴权即可获得平台的数据。本文记录了创建公开API的开发过程。

IoT Studio创建公开API

开发内容

公开API由IoT Studio的服务编排创建,以HTTP请求与HTTP返回的方式提供调用端口。与直接创建的“HTTP请求/返回”对相比,公开API不需要鉴权的AppKey与AppSecret,支持公网访问。

开发过程

STEP1 使用模板创建

在IoT Studio的项目管理页面中,选择从模板新建业务服务,如图下图所示。
image.png

如下图所示,右上角单击展开更多模板,找到最后一个模板:公开API。
image.png


业务逻辑名称随意,模板信息中可以看到,使用该模板创建的业务服务包含三个节点:HTTP请求、脚本节点和HTTP返回。单击使用该模板新建
image.png

STEP2 配置节点

创建完成后会自动跳转到服务编辑器页面。依次对节点进行配置。

  • HTTP请求节点:

节点配置如下图所示,配置Action参数为:public_api
image.png

  • Node.js脚本节点:

节点配置如下图所示,将返回的payload内容修改为:"hello Saxon"
image.png


HTTP返回节点不需要进行修改,保持默认配置即可。
单击右上角的保存后部署并发布业务服务。

STEP3 获取API域名

在服务列表中右键单击新建的服务,选择服务调用帮助
image.png

弹出服务详情页面如下图所示:
image.png


API Path即调用API的域名,单击行末的复制。

注意

发布->域名管理页面下也可以找到一个域名地址,如下图所示。
image.png


显示为默认API访问域名,但这个域名并不是调用API的域名!
image.png
笔者就是误认为这个域名是调用API的域名,测试的请求结果为400,浪费了很久的时间。

STEP4 获取参数

STEP2 配置节点中,我们没有对HTTP请求节点进行添加入参的操作,但这并不意味着对这个API的请求不需要参数。
向下滚动服务详情页面,找到请求示例,这里提供了调用的API的示例代码。切换比较直观的Python版本,如下图所示:
image.png
代码中bodyMap和Headers的声明,分别代表了请求主体信息和请求头信息。

  • bodyMap的内容如下:
{
    'id': str(uuid.uuid4()),
    'version': "1.0",
    'request': {
        'iotToken': "xxxx",
        'apiVer': "1.0.0"
    },
    'params': {
        # 接口参数
        
        'action':"public_api",
    }
}

其中uuid模块用于根据使用的网卡和时间信息生成一个随机的字符串。此处我们要根据样例代码获知需要提供的参数信息,所以可以以随机字符串代替。去除换行符与注释,整理如下:
{'id':'random_id','version': "1.0",'request': {'iotToken': "xxxx",'apiVer': "1.0.0"},'params': {'action':"public_api"}}

  • header的内容如下:
{
    'accept': 'application/json'
}

也就是说,我们要在头信息中添加一条这样的键值: 'accept': 'application/json'。

另一种参数

根据帮助文档:公开API,与貔阁同学提供的参考截图:
截图.png


我们需要在HTTP请求的Body中加入参数如下:

{'params':{'action':'public_api'},'request':{'apiVer':'1.0.0'},'version':'1.0','id': 12}

并且要在请求头信息中注明主体信息的编码方式为application/json

STEP5 使用POSTMAN测试请求

一切准备就绪,下面可以使用POSTMAN来实际测试API了。
启动POSTMAN,新建HTTP请求如下图所示:
image.png
请求方式为POST,域名使用STEP3中获取的域名。由于貔阁提供的请求参数有成功的前车之鉴,先来测试他的方法:

貔阁的请求参数

在Header中添加body内容格式的信息,如下图所示:
image.png


由于application/json不属于POSTMAN预设的主体信息格式。body选项卡中,选择信息的格式为raw,并粘贴STEP4中获取的参数到主体信息中。如下图所示。
image.png

一切准备就绪,单击Send,返回结果如下图:
image.png
返回的数据为"hello Saxon",与我们在服务开发中节点配置的内容一致。请求成功。

请求示例的参数

同样的步骤,新建一条请求如图:
image.png
这次Header中键名输入accept,键值不变。


填写body内容如图所示:
image.png


单击Send,返回成功信息如下图所示:
image.png


以上,两种参数填写方法都是可行的。

非公开API

前面的内容,我们基于公开API模板进行的服务创建。下面来探讨,如果是不使用模板,搭建完全相同的节点。会有什么不同。
项目下直接新建业务服务如图:
image.png


参考公开API模板,添加节点:HTTP请求、Node.js脚本、HTTP返回。将三者连接并配置HTTP请求如下图所示:
image.png
Action参数为:api_test


同理,复制模板中Node.js脚本的代码,配置节点如图:
image.png


HTTP返回节点不需要修改,保持默认。
保存,部署并发布服务。打开服务调用帮助,这里的页面出现了区别:
image.png
相比公开API模板创建的服务,这里多出了项目AppKey与AppSecret。


向下滚动页面,查看Python的示例代码:
image.png
这里也出现了不同,需要在客户端初始化时进行鉴权过程。
所以这里创建的并不是公开API,公网可以访问,但是要经过鉴权。

猜想

注意到bodyMap中包含了iotToken项,键值为无意义的xxxx。而iotToken常用于物联网设备HTTP连接的鉴权。猜想在非公开API的调用过程中,sdk根据appKey与appSecret建立连接得到iotToken。接着替换bodyMap中的对应项,在实际API调用过程中,起到鉴权作用的只是iotToken。换言之,如果得到了正确的iotToken,仅使用POSTMAN也可以完成非公开API的调用。
测试内容待补充。


Saxon
2020-3-8 15:25

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
传感器 存储 运维
IoT Studio场景最佳实践
本次物联网场景最佳实践我们用六合一传感器(温度、湿度、二氧化碳、PM2.5、PM10、甲醛)实现家庭环境数据实时采集,通过家中Wi-Fi上报到阿里云IoT物联网平台,借助IoT Studio低代码工具搭建可视化大屏,实时监控家中环境指标变化。
590 0
IoT Studio场景最佳实践
|
传感器 监控 数据可视化
IoT Studio 物联网可视化应用搭建开发实践
阿里云 IoT Studio 物联网可视化应用搭建开发实践
22587 4
IoT Studio 物联网可视化应用搭建开发实践
|
定位技术 API Android开发
Android Studio进行APP设计调用百度地图API接口隐藏百度地图的logo方法
Android Studio进行APP设计调用百度地图API接口隐藏百度地图的logo方法
315 0
Android Studio进行APP设计调用百度地图API接口隐藏百度地图的logo方法
|
存储 数据采集 运维
IoT Studio 产品介绍(一)|学习笔记
快速学习 IoT Studio 产品介绍
363 0
IoT Studio 产品介绍(一)|学习笔记
|
运维 监控 数据可视化
IoT Studio 产品介绍|学习笔记(二)
快速学习 IoT Studio 产品介绍
188 0
IoT Studio 产品介绍|学习笔记(二)
|
物联网
|
物联网 数据安全/隐私保护 开发者
IoT Studio 物联网开发训练营 第五天 创建你的云上工厂 | 学习笔记
简介:快速学习 IoT Studio 物联网开发训练营 第五天 创建你的云上工厂
156 0
IoT Studio 物联网开发训练营 第五天 创建你的云上工厂 | 学习笔记
|
数据可视化 物联网 开发工具
IoT Studio物联网应用开发训练营 第四天 可视化应用搭建 | 学习笔记
简介:快速学习 IoT Studio 物联网应用开发训练营 第四天 可视化应用搭建
129 0
IoT Studio物联网应用开发训练营 第四天 可视化应用搭建 | 学习笔记
|
存储 移动开发 数据可视化
IoT Studio 物联网开发训练营 第三天 云组态进阶开发 | 学习笔记
简介:快速学习 IoT Studio 物联网开发训练营 第三天 云组态进阶开发
408 0
IoT Studio 物联网开发训练营 第三天 云组态进阶开发 | 学习笔记
|
编解码 移动开发 监控
IoT Studio 物联网开发训练营 第二天:一小时搭建云组态 | 学习笔记
简介:快速学习 IoT Studio 物联网开发训练营 第二天:一小时搭建云组态
244 0
IoT Studio 物联网开发训练营 第二天:一小时搭建云组态 | 学习笔记