跳到主要内容

开发预加载资源接口

使用预加载服务之前,开发者需要完成云侧接口的开发,以提供预加载所需的资源数据。华为提供两种方式供开发者选择:云函数和开发者服务器,开发者可根据实际业务需要进行选择。

云函数

开发者需要先按照云函数接口规范开发函数,然后在AGC云端创建函数,并可测试函数运行是否正常。流程如下:

  1. 开发函数:按照云函数接口规范开发函数。
  2. 创建函数:函数业务代码开发完成后,即可在AGC云端创建函数。
  3. 测试函数:对函数进行测试,以确保函数代码运行正常。

云函数接口规范

预加载类型API名称说明参数返回值
安装预加载自定义获取预加载数据接口event.body.appId:应用ID,获取方法请参见查看应用信息自定义JSON字符串
周期性预加载自定义获取预加载数据接口- event.body.appId:应用ID,获取方法请参见查看应用信息。 - event.body.token:可选,注册周期性预加载任务时开发者自行传入的用户级认证信息,长度不超过2048个字符。 - event.body.params:可选,注册周期性预加载任务时开发者自行传入的自定义参数,长度不超过1024个字符。自定义JSON字符串
跳链安装预加载自定义获取预加载数据接口- event.body.appId:应用ID,获取方法请参见查看应用信息。 - event.body.link:可选,跳链安装预加载延迟链接。自定义JSON字符串

示例

端云一体化工程预加载云函数示例如下。其中,axios依赖库为网络请求库,需要在“cloudfunctions/云函数名称/package.json”的“dependencies”中添加axios的1.7.7或以上版本依赖。

  • 安装预加载

    import axios from 'axios';

    let myHandler = async function (event, context, callback, logger) {
    logger.info("event:" + JSON.stringify(event));
    let env1 = context.env.env1; // 环境变量
    logger.info("env1: " + env1)
    try {
    let body = event.body ? JSON.parse(event.body) : event;
    let appId = body.appId;

    logger.info("appId: " + appId);

    // http请求示例,请按照实际业务修改
    let url = 'https://example.com/prefetchApi'; // 页面资源数据的请求url
    let headers = { 'k1': 'v1' }; // 请求header
    let res; // 返回数据
    await axios.post(url, {}, { headers }) // http post请求
    .then(response => {
    res = response.data;
    })
    logger.info("--------Finished-------");
    callback(res);
    } catch (error) {
    logger.error("--------Error-------");
    logger.error("error: " + error);
    callback(error);
    }
    };

    export { myHandler };
  • 周期性预加载

    import axios from 'axios';

    let myHandler = async function (event, context, callback, logger) {
    logger.info("event:" + JSON.stringify(event));
    let env1 = context.env.env1; // 环境变量
    logger.info("env1: " + env1)
    try {
    let body = event.body ? JSON.parse(event.body) : event;
    let appId = body.appId;
    let token = body.token;
    let paramsStr = body.params; // 如果需要解析json结构paramsStr中的参数,需要使用 let params = JSON.parse(paramsStr);

    logger.info("appId: " + appId + ",token:" + token + ",params:" + paramsStr);

    // http请求示例,请按照实际业务修改
    let url = 'https://example.com/prefetchApi'; // 页面资源数据的请求url
    let headers = { 'k1': 'v1' }; // 请求header
    let res; // 返回数据
    await axios.post(url, {}, { headers }) // http post请求
    .then(response => {
    res = response.data;
    })
    logger.info("--------Finished-------");
    callback(res);
    } catch (error) {
    logger.error("--------Error-------");
    logger.error("error: " + error);
    callback(error);
    }
    };

    export { myHandler };
  • 跳链安装预加载

    import axios from 'axios';

    let myHandler = async function (event, context, callback, logger) {
    logger.info("event:" + JSON.stringify(event));
    let env1 = context.env.env1; // 环境变量
    logger.info("env1: " + env1)
    try {
    let body = event.body ? JSON.parse(event.body) : event;
    let appId = body.appId;
    let link = body.link; // 跳链安装预加载link信息

    logger.info("appId: " + appId + ",link:" + link);

    // http请求示例,请按照实际业务修改
    let url = 'https://example.com/prefetchApi'; // 页面资源数据的请求url
    let headers = { 'k1': 'v1' }; // 请求header
    let res; // 返回数据
    await axios.post(url, {}, { headers }) // http post请求
    .then(response => {
    res = response.data;
    })
    logger.info("--------Finished-------");
    callback(res);
    } catch (error) {
    logger.error("--------Error-------");
    logger.error("error: " + error);
    callback(error);
    }
    };

    export { myHandler };

开发者服务器

申请开通开发者服务器权限之后,开发者使用自己的服务器自行开发和实现预加载资源接口,接口需遵循开发者服务器接口规范。

开发者服务器接口规范

预加载类型API/PATH名称说明参数请求方式返回值
安装预加载自定义获取预加载数据接口appId:应用ID,获取方法请参见查看应用信息GET自定义JSON字符串
周期性预加载自定义获取预加载数据接口- appId:应用ID,获取方法请参见查看应用信息。 - token:可选,注册周期性预加载任务时开发者自行传入的用户级认证信息,长度不超过2048个字符。 - params:可选,注册周期性预加载任务时开发者自行传入的自定义参数,长度不超过1024个字符。GET自定义JSON字符串
跳链安装预加载自定义获取预加载数据接口- appId:应用ID,获取方法请参见查看应用信息。 - link:可选,跳链安装预加载延迟链接。GET自定义JSON字符串

示例

定义名称为prefetchData的接口,示例如下:

https://www.example.com/prefetchData?appId=1234&token=xxxx&params=yyyy