你有没有想过,不用买服务器、不用搭环境,甚至不用装一堆软件,就能自己动手做一个能查天气的API?听起来像天方夜谭?其实真没那么难。今天我就手把手教你,怎么用阿里云的函数计算(Function Compute,简称FC)快速搭建一个属于自己的天气预报API。整个过程就像做一顿快手菜——材料齐全,步骤清晰,厨房小白也能端出一盘“硬菜”。

为什么选择阿里云FC来做这件事?
先说说背景。我是个程序员,但平时主要写业务代码,对运维那套东西一直有点怵头。每次要上线个小功能,就得折腾服务器、配置Nginx、搞HTTPS证书……光是这些前置工作就够喝一壶的。直到我接触了阿里云的函数计算FC,才发现原来开发可以这么“轻”。
简单来说,FC就是一种“无服务器”技术。你只管写代码,剩下的比如部署、扩容、监控、计费,全都由阿里云帮你搞定。它按实际调用量收费,哪怕你这个API一天只被访问一次,也只花一分钱都不到。特别适合我们这种想做个小工具、练练手、验证想法的人。
而且,FC和阿里云其他服务集成得特别好。比如你要调第三方API、存数据、发通知,都能无缝对接。这次我们要做的天气预报API,核心逻辑就是:用户输入城市名 → 我们的函数去调天气接口 → 把结果返回给用户。整个流程干净利落,没有多余负担。
第一步:准备食材——注册账号+开通服务
做菜前得先买齐食材,咱们也一样。首先你得有个阿里云账号。如果你还没有,赶紧去注册一个。已经有账号的朋友,直接登录控制台就行。
接下来,进入“函数计算”产品页面,点击“开通服务”。别担心费用问题,FC有免费额度,日常小项目完全够用。开通后,你会看到一个清爽的管理界面,左边是服务列表,右边是函数创建入口。
这里提醒一下,刚入门容易卡在权限设置上。建议你使用主账号操作,等熟悉后再用子账号加RAM策略来管理权限。不然可能遇到“无权访问OSS”或者“无法调用API网关”这类报错,排查起来挺烦人的。
顺手领个优惠券,省下的都是赚到
对了,在你开始之前,强烈建议先去领个阿里云优惠券。别嫌麻烦,这玩意儿真的香!新用户经常能领到几百块的代金券,老用户也有续费折扣。哪怕你这次用不上,以后买ECS、RDS、CDN都能抵扣。白送的钱不要白不要,对吧?
第二步:搭建“厨房”——创建服务与函数
现在正式开工。在FC控制台,先创建一个“服务”。你可以把它理解成一个容器,用来装你的函数。给它起个名字,比如叫“weather-api-service”,再选个合适的地域,推荐选离你目标用户近的,比如华东1(杭州)或华北2(北京)。
服务建好后,点击“创建函数”。这里有两种方式:一种是空白函数,你自己写全部逻辑;另一种是模板函数,阿里云给你预装了一些常见场景的代码。我们选“空白函数”,语言选Python 3,因为简洁易懂,库也丰富。
函数名就叫“get_weather”吧,触发方式先不选,后面我们再配API网关。内存分配给512MB足够了,超时时间设成10秒,毕竟查个天气 shouldn’t 花太久。
第三步:编写“菜谱”——核心代码实现
代码部分才是重头戏。我们的思路很简单:
- 接收用户传来的城市名(通过HTTP请求参数)
- 调用第三方天气API(比如和风天气、心知天气,都有免费额度)
解析返回的JSON数据,提取温度、天气状况等信息
格式化成我们想要的结构,返回给前端
这里我用的是和风天气的API,注册个账号就能拿到Key。他们的文档写得挺清楚,支持城市搜索和实时天气查询。代码大概长这样:
import json
import urllib.request
import urllib.parse
def handler(event, context):
# 解析请求参数
query = event.get('query', {})
city = query.get('city', '北京') # 默认北京
# 调用和风天气API
key = "你的和风天气Key"
url = f"https://devapi.qweather.com/v7/weather/now?location={city}&key={key}"
try:
with urllib.request.urlopen(url) as response:
data = json.loads(response.read().decode())
if data['code'] == '200':
now = data['now']
result = {
'city': city,
'temp': now['temp'],
'text': now['text'],
'feelsLike': now['feelsLike'],
'humidity': now['humidity'],
'timestamp': data['updateTime']
}
else:
result = {'error': '城市未找到或API异常'}
except Exception as e:
result = {'error': str(e)}
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': ''
},
'body': json.dumps(result, ensure_ascii=False)
}
这段代码虽然短,但五脏俱全。它处理了网络请求、异常捕获、跨域头设置,还考虑了默认值和错误提示。你复制过去,改下Key,基本就能跑起来。
第四步:打通“外卖通道”——绑定API网关
现在函数写好了,但别人怎么访问呢?总不能让人家登录阿里云控制台去调吧?这就得靠API网关了。
回到函数详情页,点击“添加触发器”,选择“API 网关”,然后新建一个API。路径填/weather,方法选GET。授权选“匿名访问”,这样前端可以直接调,不用带Token。
保存后,系统会生成一个公网URL,类似:https://xxx.cn-shanghai.fcapp.run/weather-api-service/get_weather
复制这个链接,打开浏览器,加上参数试一下:https://xxx...run/.../get_weather?city=上海
如果一切正常,你应该能看到返回的JSON数据,包含温度、天气情况等信息。恭喜你,你的私人天气API已经上线了!
还能怎么玩?让API更实用
这只是个起点。你可以继续扩展功能,比如:
- 支持模糊搜索城市,输入“京”也能匹配“北京”
- 增加未来3天预报,调用和风的forecast接口
- 接入缓存机制,把热门城市的天气缓存5分钟,减少API调用次数
- 加个前端页面,做成可视化的小工具,分享给朋友用
甚至你可以把它嵌入钉钉机器人、微信公众号,每天早上自动推送天气提醒。想象一下,上班前手机“叮”一下:“杭州,多云,18°C,记得带伞哦~”,是不是很有成就感?
成本有多低?低到可以忽略
很多人一听“云服务”就觉得贵,其实完全不是那么回事。我拿自己的使用情况算了一笔账:
- 每月调用次数:约2000次
- 平均执行时间:300ms
- 内存:512MB
按阿里云FC的计价规则,这部分费用还不到1块钱。再加上API网关的流量费,满打满算一个月不超过5元。相比之下,租一台最便宜的ECS都要几十块。你说划不划算?
从想法到上线,可能只要一个下午
回顾整个过程,你会发现,用阿里云FC做这样一个天气API,其实门槛非常低。不需要深厚的运维知识,也不需要复杂的架构设计。你只需要:
- 有一个想法(比如做个天气API)
- 会一点点Python或Node.js
- 愿意花两小时跟着教程走一遍
就这么简单。而且在这个过程中,你还能学到无服务器架构、REST API设计、第三方服务集成等实用技能。这些经验对你以后做项目、跳槽面试都有帮助。
所以别再觉得“云计算”是大厂专属了。现在的工具足够友好,普通人也能玩出花来。关键是要迈出第一步。今天你敢动手写第一个函数,明天就可能做出让用户排队下载的产品。
最后再说一遍,别忘了去领那个阿里云优惠券。不管是练手还是实战,能省则省。技术人的快乐,有时候就藏在这一毛一毛的节省里。
好了,现在就去控制台试试吧!等你做出了自己的API,欢迎回来留言分享你的成果。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/149158.html