欢迎来到厦门皓佑物联科技有限公司官方网站!
您的位置: 首页 - 新闻资讯 - API服务 | JetLinks 物联网基础平台(2.x)

API服务 | JetLinks 物联网基础平台(2.x)

来源:新闻资讯 / 时间: 2024-11-22
API服务

基于数据签名的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

相关产品

在线客服
微信联系
客服
扫码加微信(手机同号)
电话咨询
返回顶部