API服务 | JetLinks 物联网基础平台(2.x)
来源:新闻资讯 /
时间: 2024-11-22
API服务
如在demo环境中: http://demo.jetlinks.cn:8844/doc.html
基于数据签名的API服务。用于提供对外开放接口的认证方式.
提示
本功能仅在企业版中提供。
# 创建API服务
进入平台:[系统设置]-[应用管理]
点击新建按钮:
选择第三方应用下的API服务
填写对应的内容保存。
appIdsecureKey
# 赋权
设备操作API设备数据API
赋权API配置中
# 使用签名的方式
# 验证流程
SignatureMD5API接口WebFlux Controller
# 签名
平台使用签名来校验客户端请求的完整性以及合法性.
例:
testIdtestSecure/device-instance/dev0001/logspageSize=20&pageIndex=0md5
md5("pageIndex=0&pageSize=201574993804802testSecure")837fe7fa29e7a5e4852d447578269523
示例:
GET /api/device?pageIndex=0&pageSize=20
X-Client-Id: testId
X-Timestamp: 1574993804802
X-Sign: 837fe7fa29e7a5e4852d447578269523
响应结果:
HTTP/1.1 200 OK
X-Timestamp: 1574994269075
X-Sign: c23faa3c46784ada64423a8bba433f25
{"status":200,result:[]}
# 验签
使用和签名相同的算法(不需要对响应结果排序):
String secureKey = ...; //密钥
String responseBody = ...;//服务端响应结果
String timestampHeader = ...;//响应头: X-Timestamp
String signHeader = ...; //响应头: X-Sign
String sign = DigestUtils.md5Hex(responseBody+timestampHeader+secureKey);
if(sign.equalsIgnoreCase(signHeader)){
//验签通过
}
# 使用token的方式
/tokenX-Access-Token
# 申请token
/token
POST /token
X-Sign: 932bbe8a39ae03f568f73a507d87afac
X-Timestamp: 1587719082698
X-Client-Id: kF**********HRZ
Content-Type: application/json
{
"expires": 7200 // 过期时间,单位秒.
}
//返回
{
"status":200,
"result":"3bcddb719b01da679b88d07acde2516" //token信息
}
# 使用token发起请求
此处以获取设备test001详情为例。
GET /device-instance/test001/detail
X-Access-Token: 3bcddb719b01da679b88d07acde2516
响应结果:
{
"result": {
"id": "test001",
"name": "温控设备0309",
"protocol": "demo-v1",
"transport": "MQTT",
"orgId": "test",
"productId": "1236859833832701952",
"productName": "智能温控",
"deviceType": {
"text": "网关设备",
"value": "gateway"
},
"state": {
"text": "离线",
"value": "offline"
},
"address": "/127.0.0.1:36982",
"onlineTime": 1586705515429,
"offlineTime": 1586705507734,
"createTime": 1585809343175,
"registerTime": 1583805253659,
"metadata": "{\"events\":[{\"id\":\"fire_alarm\",\"name\":\"火警报警\",\"expands\":{\"eventType\":\"reportData\",\"level\":\"urgent\"},\"valueType\":{\"type\":\"object\",\"properties\":[{\"id\":\"a_name\",\"name\":\"区域名称\",\"valueType\":{\"type\":\"string\"}},{\"id\":\"b_name\",\"name\":\"建筑名称\",\"valueType\":{\"type\":\"string\"}},{\"id\":\"l_name\",\"name\":\"位置名称\",\"valueType\":{\"type\":\"string\"}}]}}],\"properties\":[{\"id\":\"temperature\",\"name\":\"温度\",\"valueType\":{\"type\":\"float\",\"min\":\"0\",\"max\":\"100\",\"step\":\"0.1\",\"unit\":\"celsiusDegrees\"},\"expands\":{\"readOnly\":\"true\"}}],\"functions\":[{\"id\":\"get-log\",\"name\":\"获取日志\",\"isAsync\":true,\"output\":{\"type\":\"string\",\"expands\":{\"maxLength\":\"2048\"}},\"inputs\":[{\"id\":\"start_date\",\"name\":\"开始日期\",\"valueType\":{\"type\":\"date\",\"dateFormat\":\"yyyy-MM-dd HH:mm:ss\"}},{\"id\":\"end_data\",\"name\":\"结束日期\",\"valueType\":{\"type\":\"date\",\"dateFormat\":\"yyyy-MM-dd HH:mm:ss\"}},{\"id\":\"time\",\"name\":\"分组\",\"valueType\":{\"type\":\"string\"}}]}]}",
"configuration": {
"username": "test",
"password": "test"
},
"tags": []
},
"status": 200,
"code": "success"
}
# OAuth2.0
authorization_codeclient_credentialsrefresh_token
- 授权地址: http://{domain}/#/user/login
- client_id: 第三方平台中配置的appId
- clientSecret: 第三方平台中配置的secureKey
- Token地址: http://{domain}/api/oauth2/token
例如:
POST /api/oauth2/token
Content-Type: "application/json"
{
"grant_type": "client_credentials", //固定client_credentials
"client_id":"client_id",
"client_secret":"client_secret",
}
响应:
{
"access_token":"access_token",
"refresh_token":"refresh_token",
"expires_in":7200 //有效期,单位秒
}
使用token请求接口:
POST /device/instance/_query
Authorization: bearer access_token
{}
或者
POST /device/instance/_query?access_token=access_token
{}
说明
在企业版中已经集成了在线文档支持,打开`http://[ip]:[JetLinks后台端口]/doc.html`即可查看全部接口信息。如在demo环境中: http://demo.jetlinks.cn:8844/doc.html
上一篇: 4. 方式三:请求RESTful API实现APP开发
下一篇: 京东E卡API接口解决方案