数据预取能力支持在小部件容器启动过程中进行云函数、云应用的预请求,同一小部件配置上限为3个。
注:预取结果需为JSON格式。
IDE版本要求:IDE 2.3.9 及以上。
IDE中widget目录下preload.json里配置如下内容。
{ "type":"xxx", "params":{ "name":"xxxx", // 云函数函数名 "handler":"xxxx", // 云函数Handler "env":"test", // 云函数部署环境,开发者自定义 "data":{ // 接口业务参数 "key1":"value1", "key2":"value2" } } }
字段 |
类型 |
必须 |
含义 |
备注 |
|
id |
String |
否 |
预取唯一标识。 |
越短越好,建议1,2,3。 |
|
prefetchDepends |
String |
否 |
依赖的前一个预取配置id。 |
可以通过表达式获取前一个预取的返回数据。 |
|
type |
String |
是 |
预取类型。 |
TypeCloudFunction。 |
|
params |
Object |
是 |
预取参数。 |
||
name |
String |
是 |
云函数函数名。 |
||
handler |
String |
是 |
云函数Handler。 |
||
data |
Object |
否 |
接口业务参数(支持表达式)。 |
||
cacheType |
String |
否 |
缓存类型。 |
||
env |
String |
否 |
云函数部署环境,开发者自定义。 |
默认online。 |
|
validTime |
String |
否 |
缓存超时时间。 |
单位s 默认超时时间:24小时(即:86400s)。 |
|
scopeName |
String |
否 |
关联的scopeName。 |
本地未进行过scope授权,则不发请求。 |
|
reusable |
String |
否 |
标识此接口是否能被多次使用,多次使用的接口,缓存清除策略仅取决于开发者配置的有效期。 |
1)默认false,即不可以复用,本次使用后则移除缓存; 2)应用被杀后,缓存失效。 |
字段 |
类型 |
必须 |
含义 |
备注 |
|
id |
String |
否 |
预取唯一标识。 |
越短越好,建议1,2,3。 |
|
prefetchDepends |
String |
否 |
依赖的前一个预取配置id。 |
可以通过表达式获取前一个预取的返回数据。 |
|
type |
String |
是 |
预取类型。 |
TypeCloudApplication。 |
|
params |
Object |
是 |
预取参数。 |
||
path |
String |
是 |
HTTP接口路径。 |
||
method |
String |
否 |
方法类型。 |
GET,POST,默认POST。 |
|
params |
Object |
否 |
URL参数(支持表达式)。 |
||
body |
Obejct |
否 |
放置在Body中的参数(支持表达式)。 |
||
headers |
Obejct |
否 |
HTTP请求头参数(支持表达式)。 |
||
cloudAppId |
String |
- |
如果云服务关联了多个云应用,非默认云应用调用须指定。 |
||
cacheType |
String |
否 |
缓存类型。 |
||
env |
String |
否 |
云函数部署环境,开发者自定义。 |
默认online。 |
|
validTime |
String |
否 |
缓存超时时间。 |
单位s 默认超时时间:24小时(即:86400s)。 |
|
scopeName |
String |
否 |
关联的scopeName。 |
本地未进行过scope授权,则不发请求。 |
|
reusable |
String |
否 |
标识此接口是否能被多次使用,多次使用的接口,缓存清除策略仅取决于开发者配置的有效期。 |
1)默认false,即不可以复用,本次使用后则移除缓存; 2)应用被杀后,缓存会失效。 |
字段 |
类型 |
必须 |
含义 |
备注 |
|
id |
String |
否 |
预取唯一标识 |
越短越好,建议1,2,3 |
|
prefetchDepends |
String |
否 |
依赖的前一个预取配置id |
可以通过表达式获取前一个预取的返回数据 |
|
type |
String |
是 |
预取类型 |
TypeTOP |
|
params |
Object |
是 |
预取参数 |
||
api |
String |
是 |
TOP API的名称 |
||
data |
Object |
否 |
接口业务参数 (支持表达式) |
||
validTime |
String |
否 |
缓存超时时间 |
单位s 默认超时时间:24小时(即:86400s) |
|
scopeName |
String |
否 |
关联的scopeName |
本地未进行过scope授权,则不发请求 |
|
reusable |
String |
否 |
标识此接口是否能被多次使用,多次使用的接口,缓存清除策略仅取决于开发者配置的有效期。 |
|
入参 |
类型 |
必须 |
含义 |
备注 |
||
type |
String |
是 |
预取数据类型 |
TypeCloudFunction TypeCloudApplication TypeTOP TypeMTOP |
||
params |
Object |
是 |
预取的参数 |
|||
TypeCloudFunction |
name |
String |
是 |
云函数函数名 |
||
handler |
String |
是 |
云函数Handler |
|||
env |
String |
否 |
云函数部署环境,开发者自定义 |
|||
data |
Object |
否 |
接口业务参数 |
|||
TypeCloudApplication |
path |
String |
是 |
HTTP接口路径 |
||
method |
String |
否 |
方法 |
默认POST |
||
params |
Object |
否 |
URL参数 |
|||
body |
Object |
否 |
放置在Body中的参数 |
|||
headers |
Obejct |
否 |
HTTP请求头参数 |
|||
cloudAppId |
String |
- |
如果云服务关联了多个云应用,非默认云应用调用须指定 |
|||
env |
String |
否 |
云函数部署环境,开发者自定义 |
|||
TypeTOP |
api |
String |
是 |
TOP API的名称 |
||
data |
Object |
否 |
参数 |
|||
timeout |
String |
否 |
API调用超时,单位ms, 默认30000ms |
预加载的数据结果:需要等待接口返回。
字段 |
类型 |
说明 |
success |
boolean |
是否成功 |
result |
object |
数据内容 |
my.tb.getPrefetchData({ type: "TypeCloudFunction", params: { name: "invokeTopApiBySdk", handler: "main", env: "test", data: { api: "taobao.time.get" } }, success: (res) => { my.alert({ content: "success - " + JSON.stringify(res) }) }, fail: (res) => { my.alert({ content: "fail - " + JSON.stringify(res) }) } });
错误码 |
说明 |
2 |
无效的API入参。 |
101 |
获取的数据格式错误。 |
102 |
获取的数据不存在。 |
103 |
获取的数据已过期。 |
104 |
接口具体错误,若无兜底:接口请求失败。 |
105 |
获取数据超时。 |
106 |
表达式计算失败。 |
模板实例化的小部件支持数据预取配置在模板上,可以使用表达式构造参数进行预取接口的请求。
预加载接口有数量限制,配置上限3个。
写法 |
含义 |
备注 |
@miniAppId |
小部件id。 |
|
@miniAppKey |
小部件appKey。 |
|
@url.key |
url上的参数key的值。 |
闲时预取的时候没有URL;强依赖的话,影响预取效果; |
@url.page.key |
url上的page参数里key的值。 |
比如:https://market.m.taobao.com/app/miniapp-biz/qrcode/index.html?_ariver_appid=3000000002137055&page=pages/landing/landing?pageId=1438906 |
@url.query.key |
url上的query中,对应的Key的值。 |
|
@template.ext.key |
小部件模板ext里的参数key的值。 |
|
@prefetch.id.xxx.yyy.key |
id为请求的结果里面key。 |
比如:预取配置001 依赖 预取配置002的top接口返回结果;假设002请求的top接口返回数据 则001的配置中可以通过以下配置传参 |