【Serverless】HarmonyOS鸿蒙Next云函数微信小程序

【Serverless】HarmonyOS鸿蒙Next云函数微信小程序

简介

什么是AppGallery Connect云函数

云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开发与运维相关事务,降低应用功能的实现门槛,快速构建业务能力。

云函数提供了高效可靠的函数开发与运行框架,替开发者完全解决传统应用开发与运维中的诸多复杂事务(如服务器配置与管理、代码部署、负载均衡、弹性伸缩、高可用保证等),开发者只须聚焦业务逻辑、开发并上传函数代码,即可构建高可用、可伸缩的Serverless应用。

云函数作为Serverless的核心与枢纽,支持连接和扩展周边云服务能力,开发者可以像拼搭积木一样自由便捷地组织各项服务来实现业务逻辑。

您将建立什么?

在本次案例中,您将实现一个能够使用AppGallery Connect云函数与客户端进行交互的功能,您需要完成的功能将包含:

  • 在AGC网站上添加实现生肖计算的函数。
  • 在AGC网站上测试新增的函数。
  • 客户端调用新增函数,输入年份并成功得到返回。

你将会学到什么:

  • 如何将方法函数添加为AppGallery Connect的云函数。
  • 如何测试添加的云函数。
  • 如何集成AppGallery Connect云函数的SDK并在本地调用云函数。

您需要什么?

开发环境及技能要求

  • 您需要搭一套完整的微信开发工具开发环境
  • 熟悉JavaScript
  • 参考账号注册认证注册成为开发者

能力接入准备

集成AppGallery Connect云函数,需要完成以下准备工作

1. 创建微信小程序工程

2. 创建AppGallery Connect应用

在华为AppGallery Connect控制台创建应用。开发者可以先创建一个项目,然后在项目中添加应用。创建应用的过程中开发者需要填写对应应用的名称、包名、分类、语言等信息,创建完成后开发者可以获得应用的基本配置信息。

  • 登录AppGallery Connect网站, 输入账号信息进入AppGallery Connect控制台。
  • 在AppGallery Connect控制台页面上,点击"我的项目",进入项目管理页面。
  • 在项目设置页面点击"添加应用"开始创建我的应用。
  • 在创建应用页面,填写应用名称,应用包名。平台,设备,应用分类(应用、游戏)和语言,请按实际情况选择。
  • 应用创建成功后,可在我的项目中查看应用包名和APP ID等信息。

提示:需要通过注册成开发者才能完成集成准备中的操作,否则无法进行接入准备操作。

配置您的开发环境

  1. 登录AppGallery Connect网站,点击"我的项目"。
  2. 在项目列表中选择您需要开通云函数服务的项目。
  3. 在左侧导航栏选择"构建 > 云函数"。
  4. 点击页面右上角"立即开通"。

说明:如果您此时未设置默认数据处理位置,系统会自动弹出提示框提示您设置默认数据处理位置,具体操作请参见设置默认

集成SDK

在微信小程序项目中,安装云函数JS SDK到项目中,安装完成后添加到package.Json

npm install --save @agconnect/function@1.3.1

配置云函数

创建云函数

  1. 开通云函数服务后,在云函数界面,点击"+创建云函数"。

  2. 在创建界面中,完成函数定义。

    • "函数名称"和"描述"栏输入函数名称与描述。
    • “代码输入类型"选择"在线编辑”。
    • "部署信息"中输入部署信息,可使用默认配置。
let myHandler = function(event, context, callback, logger) {
    var res = new context.HTTPResponse(context.env, {
        "res-type": "context.env",
        "faas-content-type": "json"
    }, "application/json", "200");
    var year;
    if (event.body) {
        var _body = JSON.parse(event.body);
        year = _body.year;
    } else {
        year = event.year;
    }
    var body = {
        result: ''
    };
    body.result = animal(year);
    res.body = body;
    context.callback(res);

    function animal(inputYear) {
        var resultString;
        if (!isNumber(inputYear)) {
            resultString = "input is not a number";
        } else {
            var remainder = inputYear % 12;
            switch (remainder) {
                case 0:
                    resultString = "Monkey";
                    break;
                case 1:
                    resultString = "Chicken";
                    break;
                case 2:
                    resultString = "Dog";
                    break;
                case 3:
                    resultString = "Pig";
                    break;
                case 4:
                    resultString = "Mouse";
                    break;
                case 5:
                    resultString = "Cow";
                    break;
                case 6:
                    resultString = "Tiger";
                    break;
                case 7:
                    resultString = "Rabbit";
                    break;
                case 8:
                    resultString = "Dragon";
                    break;
                case 9:
                    resultString = "Snake";
                    break;
                case 10:
                    resultString = "Horse";
                    break;
                case 11:
                    resultString = "Sheep";
                    break;
                default:
                    resultString = "No symbolic Animal";
            }
        }
        return resultString;
    }

    function isNumber(input) {
        if (parseInt(input).toString() == "NaN") {
            return false;
        } else {
            return true;
        }
    }
};
module.exports.myHandler = myHandler;

测试函数

  1. 您可以通过两种方式进入函数测试页面。

    • 点击函数详情界面右上角的"测试"按钮。
    • 在Cloud Functions主界面上左侧导航栏点击"函数",在函数页面点击"测试"页签。
  2. 选择刚刚创建的函数及其版本,在事件中输入如下代码:

{
  "year": 2020
}
  1. 在执行结果中查看结果,判断是否与如下结果一致:

添加触发器

  1. 在函数列表中点击函数名称进入函数详情页面。如果是函数别名,则进入函数别名配置页面。
  2. 点击"配置"页签下的"添加触发器",显示触发器创建界面。
  3. 在"配置触发器"区域配置"触发器类型"等信息,此处以HTTP触发器类型和POST请求方式为例。

云函数开发

云函数最主要的功能就是在端侧触发云测的函数,首先调用wrap接口通过触发器标识指定需要触发的函数,然后调用call接口将函数的入参传入并触发函数。

formSubmit: function(e) {
    console.log(e);
    var _a = e.detail.value, httpTrigger = _a.httpTrigger, body = _a.body;
    switch (e.detail.target.dataset.type) {
        case 'run':
            this.run(httpTrigger, body);
            break;
        default:
            break;
    }
},
run: function(httpTrigger, body) {
    var _this = this;
    var functionCallable = agconnect.function().wrap(httpTrigger);
    functionCallable.call(body).then(function(res) {
        _this.setData({
            functionRes: JSON.stringify(res.getValue())
        });
    });
}

在初始化时输入刚刚复制的应用配置信息

var agConnectConfig = {
    //应用配置信息
}
//初始化agc
agconnect.instance().configInstance(agConnectConfig);

打包测试

  1. 打开微信开发者工具,选择编译。

  2. 打开页面后再HttpTrigger中填写之前在创建触发器时获取的触发器标识,再Function Body中添加触发的入参。

  3. 点击run后查看result。

    打印结果显示2022是虎年,说明测试成功

恭喜您

祝贺您,您已经成功地构建了您的第一个应用程序,并学到了:

  • 如何将方法函数添加为AppGallery Connect的云函数。
  • 如何测试添加的云函数。
  • 如何集成AppGallery Connect云函数的SDK并在本地调用云函数。

参考文件


更多关于【Serverless】HarmonyOS鸿蒙Next云函数微信小程序的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

666

更多关于【Serverless】HarmonyOS鸿蒙Next云函数微信小程序的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


学到了

学习学习了

学习了

学习

HarmonyOS鸿蒙Next云函数与微信小程序的结合,主要涉及Serverless架构的应用。Serverless架构允许开发者无需管理服务器,只需关注业务逻辑的实现。在HarmonyOS鸿蒙Next中,云函数作为Serverless的核心组件,能够为微信小程序提供后端服务支持。

具体实现上,开发者可以在HarmonyOS鸿蒙Next平台上创建云函数,编写处理微信小程序请求的业务逻辑代码。这些云函数可以通过HTTP或WebSocket等协议与微信小程序进行通信,实现数据的交互和处理。微信小程序则通过调用这些云函数,获取所需的数据或执行特定的操作。

在HarmonyOS鸿蒙Next中,云函数的开发语言支持多种选择,但根据问题要求,不涉及Java和C语言。开发者可以使用其他支持的语言,如JavaScript、Python等,来编写云函数代码。这些代码在云函数平台上运行,无需关心底层的服务器管理和维护工作。

通过将HarmonyOS鸿蒙Next云函数与微信小程序结合,开发者可以构建出高效、灵活且易于维护的应用程序。这种架构方式不仅降低了开发成本,还提高了应用程序的响应速度和可扩展性。同时,由于Serverless架构的自动扩缩容特性,应用程序能够更好地应对流量波动和突发情况。

在HarmonyOS鸿蒙Next中,云函数与微信小程序的结合可以实现高效的后端服务。通过Serverless架构,开发者无需管理服务器,只需编写业务逻辑代码并部署到云端。微信小程序通过调用云函数,可以快速获取数据或执行复杂计算,提升用户体验。鸿蒙Next的分布式能力还能优化云函数与小程序之间的通信效率,确保低延迟和高可靠性。

回到顶部