编写普通云函数
基础代码示例
以下是一个简单的 Node.js 云函数示例,展示如何处理入参并返回结果:
// index.js - 云函数入口文件
exports.main = async (event, context) => {
// 1. 解析云函数入参
const { a, b } = event;
// 2. 执行业务逻辑
const sum = a + b;
// 3. 返回结果
return {
sum,
timestamp: Date.now(),
requestId: context.requestId,
};
};
异步处理实践
由于实例的管理由平台自动处理,推荐云函数采用 async/await 模式,避免使用 Promise 链式调用:
exports.main = async (event, context) => {
// ❌ 不推荐:Promise 链式调用
getList().then((res) => {
// do something...
});
// ✅ 推荐:使用 async/await
const res = await getList();
// do something...
};
函数入参详解
每个云函数调用都会收到两个重要对象:event 和 context。
event 对象
event 对象包含触发云函数的事件数据,其内容根据触发方式不同而变化:
- 小程序调用:包含小程序端传入的参数
- HTTP 请求调用:包含 HTTP 请求信息(如请求头、请求体等)
- 定时触发:包含定时触发的相关信息
context 对象
context 对象提供调用上下文信息,帮助您了解函数的运行环境和调用方式:
- 请求 ID:当前调用的唯一标识符
- 调用来源:触发函数的服务或客户端信息
- 执行环境:函数的运 行时信息
- 用户身份:调用方的身份信息(如有)
函数返回值
云函数支持两种响应方式:简单响应和集成响应。系统会根据返回值的格式自动识别响应类型。
简单响应
直接返回数据,系统自动生成标准的 HTTP 响应。
- 返回字符串
- 返回 JSON
exports.main = async () => {
return "Hello CloudBase";
};
HTTP 响应:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Hello CloudBase
exports.main = async () => {
return {
success: true,
data: { id: 123, name: "CloudBase" },
timestamp: Date.now()
};
};
HTTP 响应:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{"success":true,"data":{"id":123,"name":"CloudBase"},"timestamp":1699999999999}
集成响应(高级)
当需要精确控制 HTTP 状态码、响应头等信息时,使用集成响应格式:
{
statusCode: number, // HTTP 状态码(必填)
headers: { // HTTP 响应头(可选)
"headerName": "headerValue"
},
body: string, // 响应体内容(可选)
isBase64Encoded: boolean // body 是否为 Base64 编码(可选)
}
💡 识别规则:返回值包含
statusCode字段时,系统会识别为集成响应。