云函数(FaaS)是一段运行在云端的、轻量的、无关联的、并且可重用的代码。无需管理服务器,只需编写和上传代码,即可获得对应的数据结果。使用云函数可以使企业和开发者不需要担心服务器或底层运维设施,可以更专注代码和业务本身,也可以使代码进一步解耦,增加其重用性。
在客户端只需依赖mpserverless-sdk,在应用的上下文中进行简单的鉴权配置,即可调用云函数。
云函数的入参只有一个ctx对象,该对象可获取调用的云函数时传入的参数,也可获取小程序serverless服务空间的云数据库,云存储等服务。
例如,我们定义一个云函数,名为hello。代码如下所示:
//云函数定义在index.js中,此文件为云函数的入口文件 module.exports = ctx => { const args = ctx.args; return { "text": args.hello, }; };云函数支持使用Node.js进行开发。您可将代码提交到云端运行,在客户端使用小程序Serverless提供的API进行调用。您还可以在云函数中直接通过API调用数据存储和文件存储的服务资源。 说明 目前云函数内不能调用其他云函数,只支持客户端的使用场景,例如支付宝小程序。 步骤一 定义云函数
关联上对应的后端云服务后,您可以在服务端目录中编写云函数的代码。
登录小程序云控制台,创建云函数。
详细操作,请参见新建云函数。
注意 云函数的名称必须和要上传的Node.js代码包名称一致。
新建云函数
在小程序的server/functions目录下创建云函数目录。
其中index.js是云函数getImageList的入口文件。
└── server/
└── functions
└── getImageList
└── index.js
编写云函数代码。
以下代码示例展示了如何从数据库images里面查出特定用户上传的图片记录。
module.exports = async (ctx) => {
const images = await ctx.mpserverless.db.collection('images').find({ owner: ctx.args.username });
return { images };
};
说明 云函数的返回值类型仅支持JSON格式。
打包云函数文件。
确保云函数文件名称和控制台上创建的云函数名称一致且为ZIP格式。
步骤二 部署云函数
编写云函数代码后,您需要将云函数代码上传至控制台发布代码。
在左侧导航栏,选择小程序Serverless > 云函数。
单击已创建的函数名称链接。
在发布管理页签,单击上传js包或更新js包,然后选择要上传的代码包。
说明 上传的代码包必须满足以下要求:
代码包的名称必须和在控制台上创建的函数名称一致。
代码包必须是.zip文件。
上传的代码包必须包含index.js文件。
上传成功后,单击代码部署。
步骤三 调用云函数
云函数代码发布后,在客户端您可以使用mpserverless.function.invoke方法调用上述定义的云函数。
以下代码示例展示了如何获取用户上传的图片记录,然后更新页面数据。
// 引入MPServerless模块 const MPServerless = require('@alicloud/mpserverless-sdk');
// 初始化MPServerless对象 const mpServerless = new MPServerless({
uploadFile: my.uploadFile, request: my.request, getAuthCode: my.getAuthCode, }, { appId: '1234456789', // 小程序应用标识 spaceId: 'db4dd657-7041-470a-90xxxxx', // 服务空间标识 clientSecret: '6c3c86xxxx6', // 服务空间 secret key endpoint: 'https://api.bspapp.com', // 服务空间地址,从小程序 serverless 控制台处获得 }); // 调用云函数getImageList mpServerless.function.invoke('getImageList', {
username: 'Vincent', }).then((res) => { if (res.success && res.result) { this.setData({ imageList: res.result.images }); } }).catch(console.error);
云函数是一个后端服务,有时需要获得从客户端传来的参数。通过云函数内置的ctx.args方法,您可以获得从客户端传来的参数。 客户端代码
以下是客户端代码示例:
await mpserverless.function.invoke('hello', { hello: 'world' });
云函数代码
以下是云函数代码示例:
module.exports = async ctx => { ctx.logger.info('hello %s', ctx.args.hello); };
在云函数中,您可以直接调用同一环境(空间)的数据存储和文件存储服务。ctx.mpserverless在云函数封装了小程序的基础服务, API使用方式和客户端一致。
例如,要从数据存储获取数据,可以直接调用ctx.mpserverless.db方法:
module.exports = async ctx => { const args = ctx.args; return await ctx.mpserverless.db.collection('user').find({ uid: args.uid }); };
云函数(FaaS)是一段运行在云端的、轻量的、无关联的、并且可重用的代码。无需管理服务器,只需编写和上传代码,即可获得对应的数据结果。使用云函数可以使企业和开发者不需要担心服务器或底层运维设施,可以更专注代码和业务本身,也可以使代码进一步解耦,增加其重用性。
在客户端只需依赖mpserverless-sdk,在应用的上下文中进行简单的鉴权配置,即可调用云函数。
云函数的入参只有一个ctx对象,该对象可获取调用的云函数时传入的参数,也可获取小程序serverless服务空间的云数据库,云存储等服务。
云函数提供了 ctx.httpclient HTTP 请求方法。无需额外依赖,您就可以请求任何 HTTP 和 HTTPS 协议的 Web 服务。
例如,请求一个网页:
module.exports = async ctx => { const res = await ctx.httpclient.request('https://www.alipay.com/x/notFound.htm'); return { html: res.status === 200 ? res.data : '', }; };
其中,ctx.httpclient返回的是一个urllib实例。
云函数(FaaS)是一段运行在云端的、轻量的、无关联的、并且可重用的代码。无需管理服务器,只需编写和上传代码,即可获得对应的数据结果。使用云函数可以使企业和开发者不需要担心服务器或底层运维设施,可以更专注代码和业务本身,也可以使代码进一步解耦,增加其重用性。
在客户端只需依赖mpserverless-sdk,在应用的上下文中进行简单的鉴权配置,即可调用云函数。
云函数的入参只有一个ctx对象,该对象可获取调用的云函数时传入的参数,也可获取小程序serverless服务空间的云数据库,云存储等服务。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。