文档中心 > 店铺动态卡片-开发指引

使用数据预取

更新时间:2022/12/08 访问次数:4243

数据预取能力支持在小部件容器启动过程中进行云函数、云应用的预请求,同一小部件配置上限为3个。

注:预取结果需为JSON格式。

IDE版本要求:IDE 2.3.9 及以上。


一、配置


26.png


IDE中widget目录下preload.json里配置如下内容。


{
  "type":"xxx",
  "params":{
    "name":"xxxx", // 云函数函数名
    "handler":"xxxx", // 云函数Handler
    "env":"test", // 云函数部署环境,开发者自定义
    "data":{ // 接口业务参数
      "key1":"value1",
      "key2":"value2"
    }
  }
}


1.云函数 ()


字段

类型

必须

含义

备注

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)应用被杀后,缓存失效。


2.云应用 (mtop.miniapp.cloud.application.request)


字段

类型

必须

含义

备注

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)应用被杀后,缓存会失效。


3.TOP调用 (mtop.miniapp.cloud.invoke.top)


字段

类型

必须

含义

备注

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

标识此接口是否能被多次使用,多次使用的接口,缓存清除策略仅取决于开发者配置的有效期。

  • 默认false,即不可以复用,本次使用后则移除缓存;
  • 应用被杀后,缓存失效


二、获取数据

1.接口:my.tb.getPrefetchData

2.入参


入参

类型

必须

含义

备注

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



3.出参


预加载的数据结果:需要等待接口返回。


字段

类型

说明

success

boolean

是否成功

result

object

数据内容


4.示例


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) })
        }
      });


5.错误码


错误码

说明

2

无效的API入参。

101

获取的数据格式错误。

102

获取的数据不存在。

103

获取的数据已过期。

104

接口具体错误,若无兜底:接口请求失败。

105

获取数据超时。

106

表达式计算失败。


三、特殊场景

1.模板小部件


模板实例化的小部件支持数据预取配置在模板上,可以使用表达式构造参数进行预取接口的请求。


2.数量限制


预加载接口有数量限制,配置上限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.page.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接口返回数据
{
"time": "2020-11-06 11:38:20",
"request_id": "6ir76d9mxkoi"
}

则001的配置中可以通过以下配置传参
{
"time":@prefetch.002.time
}




FAQ

关于此文档暂时还没有FAQ
返回
顶部