你有没有想过,不用买服务器、不用配置Nginx、也不用担心半夜三点服务器挂了要爬起来重启,就能快速上线一个API接口?听起来像做梦?别急,今天我就带你用阿里云的“函数计算”来实现这个梦——而且整个过程比你点外卖还简单!

没错,我们今天要讲的就是如何利用阿里云函数计算(Function Compute),零基础部署一个完整的RESTful API。不管你是前端小白、后端萌新,还是想快速验证产品想法的独立开发者,这篇教程都能让你在两小时内搞定一个能对外提供服务的API接口。
为什么选择函数计算来部署API?
先别急着敲代码,咱们先聊聊“为啥要用函数计算?”传统方式部署API,你得买ECS实例,装Node.js或Python环境,配反向代理,还得考虑负载均衡和安全组……一套流程下来,还没写一行业务代码,时间已经过去半天了。
而函数计算呢?它是一种“无服务器”(Serverless)技术,说白了就是:你只管写代码,剩下的——运行环境、自动扩缩容、日志监控、高可用保障——全都由阿里云帮你搞定。你按实际调用次数和执行时间付费,用多少花多少,哪怕你的API一天只被调用一次,也几乎不花钱。
特别适合做原型验证、小工具API、或者流量波动大的应用。比如你开发了个微信小程序,需要一个后端接口存用户数据,这时候函数计算就是最佳拍档。
准备工作:注册账号 + 开通服务
第一步,当然是去阿里云官网注册一个账号。如果你已经有账号了,直接登录就行。建议用支付宝快捷登录,方便又安全。
登录后,在控制台搜索“函数计算”,进入服务页面,点击“开通服务”。首次使用是免费的,每月有一定额度的免费调用次数和执行时间,够你玩很久。
这里插一句:刚入门的朋友别担心费用问题,我建议你在开通前先领一张阿里云优惠券,能省则省嘛!点击这里领取专属优惠券,新老用户都有机会拿到代金券,说不定能直接免单几个月!
创建第一个函数:从Hello World开始
服务开通后,点击“新建函数”。这里有几个创建方式,我们选择“空白函数”,这样更自由,也能更好地理解整个流程。
接下来填写函数信息:
- 函数名称:比如叫 api-gateway-demo
- 运行环境:选 Node.js 16 或 Python 3.9 都行,我这里用 Node.js 举例
- 触发方式:勾选“HTTP触发器”
点击下一步,系统会自动生成一段默认代码。你会看到一个 handler 函数,接收 request 和 response 参数。现在你只需要把 return 的内容改成你想返回的数据就行了。
比如,我们让它返回一个JSON:
module.exports.handler = function(request, response, context) {
const data = {
code: 200,
message: "Hello from Alibaba Cloud Function Compute!",
timestamp: new Date().toISOString()
};
response.send(JSON.stringify(data));
};
保存并部署。几秒钟后,你就得到了一个公网可访问的URL,形如:https://xxx.cn-hangzhou.fcapp.run/xxxx。用浏览器打开,就能看到返回的JSON数据了!
升级玩法:让API支持GET/POST请求
真正的RESTful API肯定不能只会返回“Hello World”。我们来给它加点料,让它能处理不同的HTTP方法。
修改代码如下:
module.exports.handler = function(request, response, context) {
const method = request.method;
let result = {};
if (method === 'GET') {
const query = request.queries || {};
result = {
action: 'get',
data: `你好,你传的参数是:${JSON.stringify(query)}`
};
} else if (method === 'POST') {
let body = '';
request.on('data', chunk => body += chunk);
request.on('end', () => {
try {
const postData = JSON.parse(body);
result = {
action: 'post',
received: postData,
status: 'success'
};
response.setHeader('Content-Type', 'application/json');
response.send(JSON.stringify(result));
} catch (e) {
response.send('Invalid JSON');
}
});
return; // 注意:异步处理时要提前return
} else {
result = { error: 'Method not allowed' };
}
response.setHeader('Content-Type', 'application/json');
response.send(JSON.stringify(result));
};
这段代码做了什么?它能判断请求是GET还是POST,并分别处理。GET可以接收查询参数,POST能解析JSON体。是不是有点后端那味儿了?
接入API网关:给函数起个好记的名字
虽然函数计算生成的URL能用,但太长了也不好记。我们可以把它绑定到API网关,然后自定义路径。
在函数详情页找到“触发器”选项卡,你会发现系统已经自动创建了一个HTTP触发器。点击进去,可以看到它关联到了API网关的一个服务。
进入API网关控制台,找到对应的服务和分组,你可以修改API的路径,比如改成 /api/users,还能设置跨域(CORS),这样前端Ajax请求就不会被拦住了。
建议开启“支持跨域”,不然你本地调试时会被浏览器的安全策略搞崩溃。
实战案例:做个简单的用户信息API
光说不练假把式,我们来做一个真实的场景:一个管理用户信息的API,支持GET获取用户列表,POST添加新用户。
由于函数计算本身不带数据库,我们可以先用内存模拟(注意:每次函数执行完内存就清空,仅用于演示)。生产环境建议搭配云数据库RDS或表格存储TableStore。
// 全局变量模拟数据存储(仅演示用)
let users = [
{ id: 1, name: "张三", age: 25 },
{ id: 2, name: "李四", age: 30 }
];
module.exports.handler = function(request, response, context) {
const method = request.method;
const path = request.path;
if (path === '/api/users' && method === 'GET') {
sendJson(response, { code: 200, data: users });
}
else if (path === '/api/users' && method === 'POST') {
let body = '';
request.on('data', chunk => body += chunk);
request.on('end', () => {
try {
const newUser = JSON.parse(body);
newUser.id = users.length + 1;
users.push(newUser);
sendJson(response, { code: 201, message: "用户添加成功", user: newUser });
} catch (e) {
sendJson(response, { code: 400, error: "无效的JSON格式" });
}
});
}
else {
sendJson(response, { code: 404, error: "接口不存在" });
}
};
function sendJson(res, data) {
res.setHeader('Content-Type', 'application/json');
res.setHeader('Access-Control-Allow-Origin', ''); // 简单跨域
res.send(JSON.stringify(data));
}
把这个代码部署上去,你就可以用Postman或curl测试了:
# 获取用户列表
curl https://your-domain.com/api/users
# 添加新用户
curl -X POST https://your-domain.com/api/users
-H "Content-Type: application/json"
-d '{"name": "王五", "age": 28}'
进阶建议:这些坑你可能也会遇到
别以为写完就万事大吉了,实际使用中还有几个常见问题:
- 冷启动延迟:函数长时间没调用,第一次请求会慢一点,这是正常现象。如果对延迟敏感,可以设置“预留实例”保持常驻。
- 执行时间限制:免费版最多执行10分钟,一般够用。超长任务要考虑拆分。
- 没有持久存储:/tmp 目录有512MB空间可读写,但重启就没了。重要数据一定要存到OSS或数据库。
- 调试麻烦:建议本地用 fun 工具模拟调试,或者多看函数计算的日志服务(SLS)。
函数计算真的香
看到这里,你应该已经亲手部署了一个能用的RESTful API了吧?整个过程不需要关心服务器运维,代码一上传就能跑,还能自动应对流量高峰,简直是懒人程序员的福音。
更重要的是,成本极低。我有个小项目用了半年,账单才几十块钱,换成ECS怎么也得几百块。省下来的钱,买杯奶茶不香吗?
别再犹豫了。不管是做个个人博客的后端,还是给APP搭个轻量接口,函数计算都值得一试。赶紧动手试试吧!
最后再提醒一次:新用户别忘了领优惠券,能帮你省下第一笔开销。点击领取阿里云优惠券,早领早享受!
如果你按照教程走通了全流程,欢迎在评论区留言“已打卡”,咱们一起交流踩过的坑、学到的技巧。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/149626.html