通过 HTTP 访问云函数
通过 HTTP 访问服务,您可以将云函数配置为标准的 HTTP 接口,无需 SDK 即可通过 HTTP 请求调用云函数。本文档介绍如何配置云函数的 HTTP 访问以及如何处理请求和响应。
前置条件
- 已创建云开发环境
- 已部署至少一个云函数
配置 HTTP 访问
步骤 1:创建域名关联
- 前往 云开发平台 - HTTP 访问服务
- 在「域名关联资源」模块点击「新建」按钮
- 配置以下信息:
| 配置项 | 说明 | 示例 |
|---|---|---|
| 关联资源类型 | 选择「云函数」,然后选择目标云函数 | hello-world |
| 域名 | 选择默认域名、自定义域名或 *(匹配所有域名) | 默认域名 |
| 触发路径 | 设置 HTTP 访问路径,支持 / 或自定义路径 | /api/hello |
💡 提示:生产环境建议绑定已备案的自定义域名,以获得完整的服务能力。配置方法请参考 自定义域名配置。

步骤 2:测试访问
配置完成后,访问 域名 + 触发路径 即可调用云函数:
# 示例:访问默认域名的云函数
curl https://your-env-id.<your-env-region>.app.tcloudbase.com/api/hello
发起 HTTP 请求
配置完成后,可以使用任何 HTTP 客户端访问云函数。
- curl
- JavaScript
- Python
# GET 请求
curl https://your-domain/your-function-path
# POST 请求
curl -X POST https://your-domain/your-function-path \
-H "Content-Type: application/json" \
-d '{"name": "CloudBase", "version": "1.0"}'
// 使用 fetch API
const response = await fetch('https://your-domain/your-function-path', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ name: 'CloudBase', version: '1.0' })
});
const data = await response.json();
console.log(data);
import requests
# POST 请求
response = requests.post(
'https://your-domain/your-function-path',
json={'name': 'CloudBase', 'version': '1.0'}
)
data = response.json()
print(data)
在云函数中处理 HTTP 请求
接收请求信息
当通过 HTTP 访问云函数时,函数的 event 参数会包含完整的 HTTP 请求信息:
exports.main = async (event, context) => {
// event 对象结构
const {
path, // HTTP 请求路径,如 /api/hello
httpMethod, // HTTP 请求方法,如 GET、POST、PUT、DELETE
headers, // HTTP 请求头对象
queryStringParameters, // URL 查询参数对象,如 ?name=value
body, // HTTP 请求体内容(字符串格式)
isBase64Encoded, // body 是否为 Base64 编码
requestContext // 云开发环境相关信息
} = event;
// 返回响应
return { message: 'success' };
};
示例:处理不同类型的请求
- GET 请求
- POST 请求
- RESTful API
exports.main = async (event) => {
const { queryStringParameters } = event;
// 获取查询参数
const name = queryStringParameters?.name || 'Guest';
return {
statusCode: 200,
body: JSON.stringify({
message: `Hello, ${name}!`,
timestamp: Date.now()
})
};
};
访问示例:
curl "https://your-domain/greet?name=CloudBase"
# 响应: {"message":"Hello, CloudBase!","timestamp":1699999999999}
exports.main = async (event) => {
const { body } = event;
// 解析 JSON 请求体
const data = JSON.parse(body);
return {
statusCode: 200,
body: JSON.stringify({
received: data,
processed: true
})
};
};
访问示例:
curl -X POST https://your-domain/process \
-H "Content-Type: application/json" \
-d '{"userId": 123, "action": "update"}'
exports.main = async (event) => {
const { httpMethod, path, queryStringParameters, body } = event;
// 路由处理
if (path === '/users' && httpMethod === 'GET') {
// 获取用户列表
return {
statusCode: 200,
body: JSON.stringify([{ id: 1, name: 'User1' }])
};
}
if (path.startsWith('/users/') && httpMethod === 'GET') {
// 获取单个用户
const userId = path.split('/')[2];
return {
statusCode: 200,
body: JSON.stringify({ id: userId, name: 'User' })
};
}
// 404
return {
statusCode: 404,
body: JSON.stringify({ error: 'Not Found' })
};
};
相关文档
- HTTP 访问服务概述 - 了解 HTTP 访问服务的核心功能和优势
- 快速开始 - 快速入门指南
- 路由配置 - 配置灵活的路由规则
- 自定义域名配置 - 绑定自定义域名
- 云函数开发指南 - 云函数编写教程