日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

開(kāi)發(fā)手冊(cè)

更新時(shí)間:

開(kāi)發(fā) - 數(shù)據(jù)操作

應(yīng)用之間共享數(shù)據(jù)時(shí),需要向提平臺(tái)操作數(shù)據(jù),或者從平臺(tái)訂閱數(shù)據(jù)。數(shù)據(jù)操作方面,這里主要涉及4個(gè)接口:新增數(shù)據(jù)、查詢數(shù)據(jù)、刪除數(shù)據(jù)、修改數(shù)據(jù)。詳見(jiàn)后面的API參考。同時(shí),為了便于應(yīng)用開(kāi)發(fā),平臺(tái)提供了SDK,簡(jiǎn)化開(kāi)發(fā)。

SDK介紹

一. Java SDK

1. 依賴

<dependency>    <groupId>com.aliyun.api.gateway</groupId>    <artifactId>sdk-core-java</artifactId>    <version>1.0.4</version></dependency>

2. 示例代碼

SyncApiClientsyncClient=SyncApiClient.newBuilder().appKey("1234567").appSecret("6726732dsfdsdsfdsfds").build();IoTApiRequestrequest=newIoTApiRequest();//設(shè)置api的版本request.setApiVer("0.1.0");// 接口參數(shù)request.putParam("json","{}");request.putParam("productKey","a1ILGykZVhP");request.putParam("deviceName","Dxb3lv1E78mg5dsVLUQW");request.putParam("serviceName","kkp");//請(qǐng)求參數(shù)域名、path、requestApiResponseresponse=syncClient.postBody("test123-cn-shanghai.alicloudapi.com","/invokeThingService",request);System.out.println("response code = "+response.getStatusCode()+" response content = "+newString(response.getBody(),"utf-8"));

二. Python SDK

1. 依賴:無(wú)

2. 示例代碼  Step 1:下載示例工程代碼。示例工程在基于Python 2.7,Python3請(qǐng)自行適配。

Step 2:修改signature_composer.py文件第49行

修改前:string_to_sign.append(_build_resource(uri=uri,body=body))修改后:string_to_sign.append(uri)

Step 3: 修改ClientDemo.py如下,執(zhí)行調(diào)用

#!/usr/bin/env python# -*- coding: utf-8 -*-importosimportsysimportjsonsys_path=sys.path[0]ifnotos.path.isdir(sys_path):sys_path=os.path.dirname(sys_path)os.chdir(sys_path)fromcom.aliyun.api.gateway.sdkimportclientfromcom.aliyun.api.gateway.sdk.httpimportrequestfromcom.aliyun.api.gateway.sdk.commonimportconstanthost="https://api.link.aliyun.com"url="/data/model/data/query"cli=client.DefaultClient(app_key="1234567",app_secret="abcdefghijklmnopq")req_post=request.Request(host=host,protocol=constant.HTTPS,url=url,method="POST",time_out=30000)req_post.set_content_type(constant.CONTENT_TYPE_STREAM)body={    "request":    "apiVer":"0.0.2    "params":{        "modelId":"EMPLOYEE",        "returnFields":["employee_no","name"],        "conditions":[{"fieldName":"id","value":"1","operate":"mt"}],        "pageSize":100,        "pageNum":1    },    "version":"1.0"}bb=json.dumps(body).encode("utf-8")req_post.set_body(bb)print'==================================================='printstr(cli.execute(req_post)).decode('string_escape')print'==================================================='

三. JS SDK

1. 依賴

$# save into package.json dependencies with -S$ npm install aliyun-api-gateway-S$# you can use cnpm for fast install$ cnpm install aliyun-api-gateway-S

2. 示例代碼

'use strict';constco=require('co');constClient=require('aliyun-api-gateway').Client;constclient=newClient('YOUR_APP_KEY','YOUR_APP_SECRET');co(function*(){    varurl='http://apiqingdaohttps.foundai.com/test1234';    varresult=yield client.post(url,{        data:{        'testtest':'query1Value'        },        headers:{            accept:'application/json'        }    });    console.log(JSON.stringify(result));});

數(shù)據(jù)操作API

一. API 描述

API名稱

描述

Path

版本

新增數(shù)據(jù)

基于已經(jīng)創(chuàng)建且被授權(quán)寫入的模型,進(jìn)行數(shù)據(jù)的新增。

/data/model/data/insert

0.0.3

刪除數(shù)據(jù)

基于已經(jīng)創(chuàng)建且被授權(quán)刪除的模型,進(jìn)行數(shù)據(jù)的更新。

/data/model/data/delete

0.0.2

修改數(shù)據(jù)

基于已經(jīng)創(chuàng)建且被授權(quán)更新的模型,進(jìn)行數(shù)據(jù)的更新。

/data/model/data/update

0.0.2

查詢數(shù)據(jù)

基于已經(jīng)創(chuàng)建且被授權(quán)查詢的模型,進(jìn)行數(shù)據(jù)的查詢。

/data/model/data/query

0.0.3

獲取文件上傳地址

對(duì)于模型中指定為“圖片”標(biāo)簽的字段,在該字段需要填寫文件名,并且文件名需要通過(guò)該接口獲取,該接口同時(shí)還會(huì)返回一個(gè)URL供用戶上傳文件。該地址有效期是10秒。

/data/model/data/upload

0.0.1

獲取文件下載地址

對(duì)于模型中指定為“圖片”標(biāo)簽的字段,在該字段的內(nèi)容是一個(gè)系統(tǒng)分配的文件名,用戶可以通過(guò)本接口,傳入這個(gè)文件名,獲取真實(shí)的文件下載地址。該地址有效期是10秒。

/data/model/data/download

0.0.1

二. API 約定

  1. 日期類型的參數(shù)傳入格式:當(dāng)前時(shí)間到格林威治時(shí)間1970年01月01日00時(shí)00分00秒的毫秒數(shù)。

  2. 數(shù)量查詢的一些約定:

    1. 單次查詢最多返回200條數(shù)據(jù),未指定分頁(yè)參數(shù)情況下,查詢返回滿足條件的前200條,可根據(jù)返回參數(shù)中的hasNext判斷是否有更多數(shù)據(jù)。

    2. 若需要按照指定條件返回?cái)?shù)據(jù)總數(shù),則指定返回參數(shù)為COUNT,API返回參數(shù)中會(huì)帶有COUNT以及對(duì)應(yīng)的值。

    3. 若需要按照指定條件,及按照字段分組進(jìn)行數(shù)量查詢,則指定返回參數(shù)為COUNT(分組字段1,分組字段2),API返回參數(shù)中會(huì)帶有COUNT以及對(duì)應(yīng)的值。

  3. 更新刪除的約定:?jiǎn)未尾僮?,最多支?00條數(shù)據(jù)。

  4. 運(yùn)算符定義:

算符

含義

備注

eq

equals

相等

neq

not equals

不相等

lt

less than

小于

lteq

less than or equals

小于等于

mt

more than

大于

mteq

more than or equals

大于等于

bt

between

在..之間

in

in

在..之內(nèi)

nin

not in

不在..之內(nèi)

nul

is null

為空

nnul

is not null

不為空

    數(shù)據(jù)包括系統(tǒng)屬性,API中不允許賦值和更新系統(tǒng)屬性,系統(tǒng)屬性如下:

屬性

描述

id

數(shù)據(jù)主鍵

creator

數(shù)據(jù)創(chuàng)建者

modifier

數(shù)據(jù)修改者

gmt_create

數(shù)據(jù)創(chuàng)建時(shí)間

gmt_modified

數(shù)據(jù)修改時(shí)間

    三. 數(shù)據(jù)新增API

    1. 請(qǐng)求參數(shù):

    參數(shù)

    類型

    描述

    是否必傳

    modelId

    String

    數(shù)據(jù)模型id

    properties

    JSON

    數(shù)據(jù)字段鍵值對(duì),增加的字段的鍵只能是模型包含的字段,否則會(huì)報(bào)錯(cuò),其中 Boolean屬性的property傳入”true”和”false”或者0和1。如:{“name”:”xxx”,”age”:18}

    scopeId

    String

    經(jīng)常是項(xiàng)目的id,該參數(shù)非必填,一般上架應(yīng)用被授權(quán)之后,會(huì)被默認(rèn)綁定到一個(gè)scope中,因此當(dāng)前操作會(huì)被默認(rèn)操作到被綁定到的這一個(gè)scope中。但是,對(duì)于集成應(yīng)用,也有可能被綁定到多個(gè)scope中,此時(shí)該操作需要填入scopeId。

    appId

    String

    對(duì)于SaaS應(yīng)用,需要填該值

    2. 返回參數(shù)

    參數(shù)

    類型

    描述

    data

    Long

    數(shù)據(jù)主鍵id

    3. 請(qǐng)求示例

    {    "request":{    "apiVer":"0.0.3"http://api版本號(hào)    },    "id":1508212818676,//request里的全局唯一id透?jìng)?   "params":{        "modelId":"XXX123",//數(shù)據(jù)模型id        "scopeId":"fdbsdj1dfjdubgxxx",//數(shù)據(jù)模型id        "properties":{            "BRAND":"BMW",            "MODE":"5",            "CREATE_DATE":1526969423,            "LONG_SIZE":3.3,            "LONG_SIZE":2.2        }    },    "version":"1.0"http://請(qǐng)求協(xié)議版本}

    4. 返回示例

    {    "code":200,    "message":"success",    "localizedMsg":null,    "data":12345}

    5. 返回碼

    狀態(tài)碼

    描述

    其他說(shuō)明

    200

    成功

    460

    參數(shù)驗(yàn)證異常

    會(huì)帶有驗(yàn)證異常的詳細(xì)說(shuō)明

    500

    服務(wù)異常

    server error

    52002

    無(wú)訪問(wèn)權(quán)限

    52005

    找不到目標(biāo)存儲(chǔ)

    52009

    參數(shù)和模型定義不匹配

    52011

    數(shù)據(jù)類型校驗(yàn)錯(cuò)誤

    四. 數(shù)據(jù)刪除API

    1. 請(qǐng)求參數(shù)

    參數(shù)

    類型

    是否必傳

    描述

    modelId

    String

    數(shù)據(jù)模型id

    conditions

    JSON

    數(shù)據(jù)條件,由字段名、運(yùn)算符、比較值組成一個(gè)condition。如:[{“fieldName”: “id”,”operate”: “eq”,”value”: 7}]

    appId

    String

    對(duì)于SaaS應(yīng)用,需要填該值

    scopeId

    String

    經(jīng)常是項(xiàng)目的id,該參數(shù)非必填,一般上架應(yīng)用被授權(quán)之后,會(huì)被默認(rèn)綁定到一個(gè)scope中,因此當(dāng)前操作會(huì)被默認(rèn)操作到被綁定到的這一個(gè)scope中。但是,對(duì)于集成應(yīng)用,也有可能被綁定到多個(gè)scope中,此時(shí)該操作需要填入scopeId。

    其中condition針對(duì)不同類型的屬性支持的運(yùn)算符:

    屬性

    支持的運(yùn)算符

    Integer

    eq,neq,lt,lteq,mt,mteq,bt,in,nin,nnull

    String

    eq,neq,,nnul,in,nin

    Double

    eq,neq,lt,lteq,mt,mteq,bt,in,nin,nnull

    Boolean

    eq,nnul

    Date

    eq,neq,lt,lteq,mt,mteq,bt,nnul

    2. 返回參數(shù)

    參數(shù)

    類型

    描述

    data

    Integer

    刪除數(shù)據(jù)的條數(shù)

    3. 請(qǐng)求示例

    {"request":{"apiVer":"0.1.0"http://api版本號(hào)},"id":1508212818676,//request里的全局唯一id透?jìng)?params":{"modelId":"XXX123","conditions":[{"fieldName":"BRAND","value":"BMW","operate":"eq"},{"fieldName":"MODE","value":"X5","operate":"eq"}]},"version":"1.0"http://請(qǐng)求協(xié)議版本}

    4. 返回示例

    {"code":200,"message":"success","localizedMsg":null,"data":100}

    5. 返回碼

    狀態(tài)碼

    描述

    說(shuō)明

    200

    成功

    460

    參數(shù)驗(yàn)證異常

    會(huì)帶有驗(yàn)證異常的詳細(xì)說(shuō)明

    500

    服務(wù)異常

    server error

    52002

    無(wú)訪問(wèn)權(quán)限

    五. 數(shù)據(jù)修改API

    1. 請(qǐng)求參數(shù)

    參數(shù)

    類型

    是否必傳

    描述

    modelId

    String

    數(shù)據(jù)模型id

    updateDetails

    JSON

    更新的具體字段和值,字段需要是模型中包含的字段,否則會(huì)報(bào)錯(cuò),其中 Boolean屬性的property傳入”true”和”false”或者0和1。如:{“name”:”xxxx”,”age”:20}

    conditions

    JSON

    條件,由字段名、運(yùn)算符、比較值組成一個(gè)condition,格式如下:[{“fieldName”: “id”,”operate”: “eq”,”value”: 7}]fieldName表示 字段的名稱operate表示操作符,操作符見(jiàn)上表value表示值

    appId

    String

    對(duì)于SaaS應(yīng)用,需要填該值

    scopeId

    String

    經(jīng)常是項(xiàng)目的id,該參數(shù)非必填,一般上架應(yīng)用被授權(quán)之后,會(huì)被默認(rèn)綁定到一個(gè)scope中,因此當(dāng)前操作會(huì)被默認(rèn)操作到被綁定到的這一個(gè)scope中。但是,對(duì)于集成應(yīng)用,也有可能被綁定到多個(gè)scope中,此時(shí)該操作需要填入scopeId。

    其中condition針對(duì)不同類型的屬性支持的運(yùn)算符:

    屬性

    支持的運(yùn)算符

    Integer

    eq,neq,lt,lteq,mt,mteq,bt,in,nin,nnull

    String

    eq,neq,,nnul,in,nin

    Double

    eq,neq,lt,lteq,mt,mteq,bt,in,nin,nnull

    Boolean

    eq,nnul

    Date

    eq,neq,lt,lteq,mt,mteq,bt,nnul

    2. 返回參數(shù)

    參數(shù)

    類型

    描述

    data

    Integer

    更新數(shù)據(jù)的條數(shù)

    3. 請(qǐng)求示例

    {    "request":{        "apiVer":"0.0.3"http://api版本號(hào)    },    "id":1508212818676,//request里的全局唯一id透?jìng)?   "params":{        "modelId":"XXX123",        "conditions":[            {"fieldName":"BRAND","value":"BMW","operate":"eq"},            {"fieldName":"MODE","value":"X5","operate":"eq"}        ],        "updateDetails":{            "LONG_SIZE":4,            "WIDTH_SIZE":3        }    },    "version":"1.0"http://請(qǐng)求協(xié)議版本}

    4. 返回示例

    {    "code":200,    "message":"success",    "localizedMsg":null,    "data":100}

    5. 返回碼

    狀態(tài)碼

    描述

    200

    成功

    460

    參數(shù)驗(yàn)證異常

    會(huì)帶有驗(yàn)證異常的詳細(xì)說(shuō)明

    500

    服務(wù)異常

    server error

    52002

    無(wú)訪問(wèn)權(quán)限

    52006

    資源更新錯(cuò)誤

    52011

    數(shù)據(jù)類型校驗(yàn)錯(cuò)誤

    六. 數(shù)據(jù)查詢API

    1. 請(qǐng)求參數(shù)

    參數(shù)

    類型

    是否必傳

    說(shuō)明

    modelId

    String

    數(shù)據(jù)模型ID

    returnFields

    JSON

    指定返回的字段1.若期望返回所有字段,則傳入?yún)?shù)為{““}2.若期望返回?cái)?shù)據(jù)總數(shù),則傳入?yún)?shù)為{“COUNT”}2.若期望按照字段分組返回?cái)?shù)據(jù)總數(shù),則傳入?yún)?shù)為{“COUNT(分組字段1,分組字段2)”}。如:[““]或者[“name”,”age”][COUNT][COUNT(name)]

    conditions

    JSON

    條件,由字段名、運(yùn)算符、比較值組成一個(gè)condition。如:[{“fieldName”: “id”,”operate”: “eq”,”value”: 7}]

    orderBy

    JSON

    排序條件,由增序或降序以及排序字段組成。如:{“asc”:”true”,”orderByFields”:[“name”,”age”]}

    pageNum

    Integer

    分頁(yè)頁(yè)數(shù)

    pageSize

    Integer

    分頁(yè)每頁(yè)數(shù)量

    appId

    String

    對(duì)于SaaS應(yīng)用,需要填該值

    scopeId

    String

    經(jīng)常是項(xiàng)目的id,該參數(shù)非必填,一般上架應(yīng)用被授權(quán)之后,會(huì)被默認(rèn)綁定到一個(gè)scope中,因此當(dāng)前操作會(huì)被默認(rèn)操作到被綁定到的這一個(gè)scope中。但是,對(duì)于集成應(yīng)用,也有可能被綁定到多個(gè)scope中,此時(shí)該操作需要填入scopeId。

    其中returnFields支持的函數(shù)類型:

    函數(shù)名稱

    描述

    實(shí)例

    COUNT

    函數(shù)返回匹配指定條件的行數(shù)

    {“COUNT(分組字段1,分組字段2)”}

    DATE_FORMAT

    函數(shù)按照f(shuō)ormat字符串格式化字段值

    {“DATE_FORMAT(分組字段,format)”}

    SUM

    函數(shù)返回?cái)?shù)值列的總數(shù)

    {“SUM(分組字段)”}

    AVG

    函數(shù)返回?cái)?shù)值列的平均值

    {“AVG(分組字段)”}

    MIN

    函數(shù)返回?cái)?shù)值列的最小值

    {“MIN(分組字段)”}

    MAX

    函數(shù)返回?cái)?shù)值列的最大值

    {“MAX(分組字段)”}

    DATE_FORMAT支持的format修飾符

    修飾符名稱

    描述

    %Y

    %Y-%m

    年月

    %Y-%m-%d

    年月日

    %Y-%m-%d %H

    年月日時(shí)

    %Y-%m-%d %H:%i

    年月日時(shí)分

    %Y-%m-%d %H:%i:%s

    年月日時(shí)分秒

    其中condition針對(duì)不同類型的屬性支持的運(yùn)算符:

    屬性

    支持的運(yùn)算符

    Integer

    eq,neq,lt,lteq,mt,mteq,bt,in,nin,nnull

    String

    eq,neq,,nnul,in,nin

    Double

    eq,neq,lt,lteq,mt,mteq,bt,in,nin,nnull

    Boolean

    eq,nnul

    Date

    eq,neq,lt,lteq,mt,mteq,bt,nnul

    2. 返回參數(shù)

    參數(shù)

    類型

    描述

    data

    String

    查詢返回?cái)?shù)據(jù)內(nèi)容,其中,Boolean類型的屬性返回值為0或1

    3. 請(qǐng)求示例-1

    {    "request":{        "apiVer":"0.0.2"http://api版本號(hào)     },    "id":1508212818676,//request里的全局唯一id透?jìng)?   "params":{        "modelId":"XXX123",        "returnFields":["MODE","ENGINE"],        "conditions":[            {"fieldName":"BRAND","value":"BMW","operate":"eq"},            {"fieldName":"WIDTH_SIZE","value":1,"value2":2,"operate":"bt"},            {"fieldName":"LONG_SIZE","value":"3","operate":"mt"}        ],        "orderBy":{            "asc":true,            "orderByFields":["CREATE_DATA","MODE"]        },        "pageNum":1,        "pageSize":10    },    "version":"1.0"http://請(qǐng)求協(xié)議版本}

    4. 返回示例-1

    {    "code":200,    "localizedMsg":null,    "data":"{\"count\":1,        \"hasNext\":false,        \"items\":[{\"gmt_create\":1551872701000,\"MODE\":\"33\",\"ENGINE\":\"44\",\"id\":2,\"gmt_modified\":1551872714000}],        \"pageNum\":1,        \"pageSize\":10}",    "message":"success"}

    5. 請(qǐng)求示例-2

    {    "request":{        "apiVer":"0.1.0"http://api版本號(hào)    },    "id":1508212818676,//request里的全局唯一id透?jìng)?   "params":{        "modelId":"XXX123",        "returnFields":["COUNT",        "conditions":[            {"fieldName":"BRAND","value":"BMW","operate":"eq"},            {"fieldName":"WIDTH_SIZE","value":1,"value2":2,"operate":"bt"},            {"fieldName":"LONG_SIZE","value":"3","operate":"mt"}        ],        "pageNum":1,        "pageSize":10    },    "version":"1.0"http://請(qǐng)求協(xié)議版本}

    6. 返回示例-2

    {    "code":200,    "localizedMsg":null,    "data":"{        \"hasNext\":false,        \"items\":[{            \"COUNT\":100        }]    }"    "message":"success"}

    7. 請(qǐng)求示例-分組數(shù)量查詢

    {    "request":{        "apiVer":"0.1.0"http://api版本號(hào)    },    "id":1508212818676,//request里的全局唯一id透?jìng)?   "params":{        "modelId":"XXX123",        "returnFields":["COUNT(BRAND,NAME)"],        "conditions":[            {"fieldName":"BRAND","value":"BMW","operate":"eq"},            {"fieldName":"WIDTH_SIZE","value":1,"value2":2,"operate":"bt"},            {"fieldName":"LONG_SIZE","value":"3","operate":"mt"}        ],        "pageNum":1,        "pageSize":10    },    "version":"1.0"http://請(qǐng)求協(xié)議版本}

    8. 返回示例分組數(shù)量查詢

    {    "code":200,    "localizedMsg":null,    "message":"success",    "data":"{        \"hasNext\":false,        \"items\":[        {            \"COUNT\":100,            \"BRAND\":\"BMW\",            \"NAME\":\"X1\"        },{            \"COUNT\":200,            \"BRAND\":\"JEEP\",            \"NAME\":\"M2\"        }]    }"}

    9. 返回碼

    狀態(tài)碼

    描述

    200

    成功

    460

    參數(shù)驗(yàn)證異常

    會(huì)帶有驗(yàn)證異常的詳細(xì)說(shuō)明

    500

    服務(wù)異常

    server error

    52002

    無(wú)訪問(wèn)權(quán)限

    52005

    目標(biāo)存儲(chǔ)未找到

    七. 獲取文件上傳地址API

    1. 請(qǐng)求參數(shù)

    參數(shù)

    類型

    是否必傳

    描述

    modelId

    String

    數(shù)據(jù)模型id

    version

    String

    數(shù)據(jù)模型的版本號(hào)

    fileSize

    Integer

    文件大小,以字節(jié)為單位,目前系統(tǒng)不支持5M以上文件

    attrName

    String

    屬性名稱,模型中包含的屬性名稱,不包含會(huì)報(bào)錯(cuò)進(jìn)行提示

    fileType

    String

    文件類型,目前系統(tǒng)只支持bmp、png、gif、jpg

    appId

    String

    對(duì)于SaaS應(yīng)用,需要填該值

    scopeId

    String

    經(jīng)常是項(xiàng)目的id,該參數(shù)非必填,一般上架應(yīng)用被授權(quán)之后,會(huì)被默認(rèn)綁定到一個(gè)scope中,因此當(dāng)前操作會(huì)被默認(rèn)操作到被綁定到的這一個(gè)scope中。但是,對(duì)于集成應(yīng)用,也有可能被綁定到多個(gè)scope中,此時(shí)該操作需要填入scopeId。

    2. 返回參數(shù)

    參數(shù)

    類型

    描述

    url

    String

    數(shù)據(jù)上傳的url,url有效時(shí)間10s

    fileName

    String

    文件名稱,系統(tǒng)隨機(jī)分配的文件名稱,用戶在得到這個(gè)文件名之后,應(yīng)該將其放在相應(yīng)模型數(shù)據(jù)的文件類型的字段上,例如:xxxxx.jpg

    3. 請(qǐng)求示例

    {    "request":{        "apiVer":"0.0.1"http://api版本號(hào)    },    "id":1508212818671,//request里的全局唯一id透?jìng)?   "params":{        "modelId":"XXX123",//數(shù)據(jù)模型id        "fileSize":"3.2",//文件大小        "attrName":"name",//屬性名稱        "fileType":"jpg",//文件類型        "version":"1.0",//模型版本    },    "version":"1.0"http://請(qǐng)求協(xié)議版本}

    4. 返回示例

    {    "code":200,//返回是否成功,只要不是200說(shuō)明返回不成功    "message":"success",//如果失敗會(huì)返回失敗的信息描述    "localizedMsg":null,    "data":{"url":"http://xxx.xxx.xx","fileName":"xxx.jpg"}返回的數(shù)據(jù)}

    5. 返回碼

    狀態(tài)碼

    描述

    200

    成功

    460

    參數(shù)驗(yàn)證異常

    會(huì)帶有驗(yàn)證異常的詳細(xì)說(shuō)明

    500

    服務(wù)異常

    server error

    52002

    無(wú)訪問(wèn)權(quán)限

    52005

    找不到目標(biāo)存儲(chǔ)

    52009

    參數(shù)和模型定義不匹配

    52011

    數(shù)據(jù)類型校驗(yàn)錯(cuò)誤

    52064

    屬性字段沒(méi)有相應(yīng)的圖片標(biāo)簽

    52063

    文件大小不能大于5M

    八. 獲取文件下載地址API

    1. 請(qǐng)求參數(shù)

    參數(shù)

    類型

    是否必傳

    描述

    modelId

    String

    數(shù)據(jù)模型id

    version

    String

    數(shù)據(jù)模型的版本號(hào)

    attrName

    String

    屬性名稱,模型中包含的屬性名稱,不包含會(huì)報(bào)錯(cuò)進(jìn)行提示

    fileType

    String

    文件類型,目前系統(tǒng)只支持bmp、png、gif、jpg

    appId

    String

    對(duì)于SaaS應(yīng)用,需要填該值

    scopeId

    String

    經(jīng)常是項(xiàng)目的id,該參數(shù)非必填,一般上架應(yīng)用被授權(quán)之后,會(huì)被默認(rèn)綁定到一個(gè)scope中,因此當(dāng)前操作會(huì)被默認(rèn)操作到被綁定到的這一個(gè)scope中。但是,對(duì)于集成應(yīng)用,也有可能被綁定到多個(gè)scope中,此時(shí)該操作需要填入scopeId。

    2. 返回參數(shù)

    參數(shù)

    類型

    描述

    url

    String

    數(shù)據(jù)上傳的url,url有效時(shí)間10s

    3. 請(qǐng)求示例

    {    "request":{        "apiVer":"0.0.1"http://api版本號(hào)    },    "id":1508212818671,//request里的全局唯一id透?jìng)?   "params":{        "modelId":"XXX123",//數(shù)據(jù)模型id        "scopeId":"fdbsdj1dfjdubgxxx",//業(yè)務(wù)隔離id        "attrName":"name",//屬性名稱        "fileName":"xdsfxv.jpg",//文件類型        "version":"1.0",//模型版本    },    "version":"1.0"http://請(qǐng)求協(xié)議版本}

    4. 返回示例

    {    "code":200,//返回是否成功,只要不是200說(shuō)明返回不成功    "message":"success",//如果失敗會(huì)返回失敗的信息描述    "localizedMsg":null,    "data":{"url":"http://xxx.xxx.xx"}返回的數(shù)據(jù)下載查看的url}

    5. 返回碼

    狀態(tài)碼

    描述

    200

    成功

    460

    參數(shù)驗(yàn)證異常

    會(huì)帶有驗(yàn)證異常的詳細(xì)說(shuō)明

    500

    服務(wù)異常

    server error

    52002

    無(wú)訪問(wèn)權(quán)限

    52005

    找不到目標(biāo)存儲(chǔ)

    52009

    參數(shù)和模型定義不匹配

    52011

    數(shù)據(jù)類型校驗(yàn)錯(cuò)誤

    52064

    屬性字段沒(méi)有相應(yīng)的圖片標(biāo)簽

    開(kāi)發(fā) - 數(shù)據(jù)訂閱

    應(yīng)用可以通過(guò)HTTP2方式,訂閱數(shù)據(jù)的變更消息(新增、刪除、修改)。應(yīng)用自身不需要發(fā)布數(shù)據(jù)的變更消息到通道中,這些消息的產(chǎn)生是由應(yīng)用通過(guò)上面的數(shù)據(jù)操作API,對(duì)數(shù)據(jù)進(jìn)行操作之后,由平臺(tái)產(chǎn)生。平臺(tái)產(chǎn)生時(shí)間之后,會(huì)將消息通過(guò)訂閱關(guān)系發(fā)送到訂閱方。

    在這個(gè)消息通信中,每一個(gè)應(yīng)用實(shí)例,由AppKey標(biāo)識(shí)身份。對(duì)于單租戶型的應(yīng)用,每一個(gè)AppKey代表了一次應(yīng)用分發(fā)的實(shí)例;但是,對(duì)于SaaS應(yīng)用,他的一個(gè)AppKey代表了該應(yīng)用對(duì)應(yīng)的所有租戶的身份,因此,在SaaS應(yīng)用按照AppKey得到消息之后,需要自行根據(jù)訂閱到的數(shù)據(jù)內(nèi)容中的AppID字段,將數(shù)據(jù)對(duì)應(yīng)到不用的用戶中。

    SDK 介紹

    1. 依賴引用

    在工程中添加 maven 依賴接入 SDK。

    <dependency>    <groupId>com.aliyun.openservices</groupId>    <artifactId>iot-client-message</artifactId>    <version>1.1.3</version></dependency><dependency>    <groupId>com.aliyun</groupId>    <artifactId>aliyun-java-sdk-core</artifactId>    <version>3.7.1</version></dependency>

    2. 身份認(rèn)證

    使用服務(wù)端訂閱功能,需要基于AppKey進(jìn)行身份認(rèn)證并建立連接。該AppKey根據(jù)應(yīng)用類型不同,有兩種來(lái)源:

    • 對(duì)于獨(dú)立單租戶托管并分發(fā)的應(yīng)用,該AppKey是由托管平臺(tái)在應(yīng)用實(shí)例化分發(fā)部署應(yīng)用時(shí),自動(dòng)產(chǎn)生,并注入在主機(jī)的環(huán)境變量中,應(yīng)用事先并不知道該值,需要?jiǎng)討B(tài)從環(huán)境變量中獲取。

    • 對(duì)于共享型應(yīng)用,該AppKey是該SaaS應(yīng)用在注冊(cè)多租戶接口時(shí),從平臺(tái)創(chuàng)建,并硬編碼在應(yīng)用中。

    StringappKey="XXXXXX";StringappSecret="XXXXXXXXXXXXXXXXXXXXXXX";Stringendpoint=String.format("https://%s.iot-as-http2.cn-shanghai.aliyuncs.com:443",appKey);// 連接配置Profileprofile=Profile.getAppKeyProfile(endpoint,appKey,appSecret);// 構(gòu)造客戶端MessageClientclient=MessageClientFactory.messageClient(profile);// 數(shù)據(jù)接收client.connect(messageToken->{    System.out.println(messageToken.getMessage());    returnMessageCallback.Action.CommitSuccess;});Thread.sleep(1000000);

    *注意:關(guān)于上述代碼中的“connect”方法,需要額外說(shuō)明的是該方法在未經(jīng)過(guò)授權(quán)的情況下,會(huì)調(diào)用失敗。所以請(qǐng)務(wù)必做好重試邏輯,以便應(yīng)用一旦被授權(quán)之后,可以及時(shí)得到訂閱消息。

    3. 設(shè)置消息接受接口

    連接建立后,服務(wù)端會(huì)立即向 SDK 推送已訂閱的消息。因此,建立鏈接時(shí),需要提供消息接收接口,用于處理未設(shè)置回調(diào)的消息。建議在connect之前,調(diào)用 setMessageListener 設(shè)置消息回調(diào)。

    您需要通過(guò) MessageCallback 接口的consume方法,和調(diào)用 messageClient 的setMessageListener()方法來(lái)設(shè)置消息接收接口。consume 方法的返回值決定 SDK 是否發(fā)送 ACK。設(shè)置消息接收接口的方法如下:

    MessageCallbackmessageCallback=newMessageCallback(){    @Override    publicActionconsume(MessageTokenmessageToken){        Messagem=messageToken.getMessage();        log.info("receive : "+newString(messageToken.getMessage().getPayload()));        // TODO: 處理消息邏輯        returnMessageCallback.Action.CommitSuccess;    }};Stringtopic=String.format("/sys/appkey/%s/dop/model/data/change",appkey);messageClient.setMessageListener(topic,messageCallback);

    其中,Message消息字段如下:

    // 消息體byte[]payload;// TopicStringtopic;// 消息IDStringmessageId;// QoSintqos;

    payload內(nèi)容是一個(gè)JSON對(duì)象字符串,字段信息如下:

    // 模型ID 
    StringmodelId; 
     
    // 變更數(shù)據(jù)的ID 
    List<Long>dataIds; 
     
    // 操作類型:insert/update/delete 
    StringoperateType; 
     
    // 訂閱的appId, 以appKey授權(quán)時(shí)為空 
    StringappId;