-
API接入实战(以OpenWeatherMap为例)
API接入实战(以OpenWeatherMap为例)
去年我帮朋友做了个“户外骑行助手”小程序,用户问“明天杭州能骑车吗?”,它能直接报出“晴,25-30℃,无风”——这功能靠的是接入OpenWeatherMap的天气API。很多人觉得调API是程序员的事,其实只要跟着步骤走,连Excel都玩得转的人也能搞定。这节我就用“骑行助手”的开发过程当例子,手把手教你怎么把天气API接到自己的工具里。
一、先搞定“入场券”:注册OpenWeatherMap拿API密钥
想调别人的API,得先“登记”——OpenWeatherMap(简称OWM)是全球用得最多的免费天气数据平台,注册就能拿密钥(API Key),每天能调1000次,够个人小工具用了。
具体步骤:
1.打开OWM官网(https://openweathermap.org/),点右上角“Sign Up”;
2.填邮箱、密码,勾选同意条款,点“Sign Up”(验证邮件可能在垃圾邮箱里,注意查收);
3.登录后,点右上角“API keys”→“Generate”,填个名字(比如“骑行助手”),生成密钥(类似“a1b2c3d4e5f6g7h8i9j0”的字符串,务必保存好,丢了就得重新生成)。
注意:密钥别随便给人!别人拿到能蹭你的调用次数,甚至恶意调用导致账号被封。
二、摸透“规则”:读API文档,知道“怎么问、要啥数据”
API就像自动售货机——你得知道“按哪个按钮出可乐”。OWM的文档写得很细,重点看这3部分:
核心接口:常用的是“当前天气”(Current Weather Data)和“5天/3小时预报”(5 Day / 3 Hour Forecast)。
1.当前天气接口地址:https://api.openweathermap.org/data/2.5/weather;
2.预报接口地址:https://api.openweathermap.org/data/2.5/forecast。
必传参数:
1.q:城市名(如“Hangzhou,CN”);
2.appid:你的API密钥;
3.units:温度单位(metric是摄氏度,imperial是华氏度,默认开尔文)。
返回数据:
调用后会返回JSON格式的数据,重点关注这几个字段(以当前天气为例):
1.main.temp:当前温度(℃);
2.weather[0].main:天气状况(如“Clear”晴,“Rain”雨);
3.wind.speed:风速(米/秒);
4.cod:状态码(200是成功,404是城市没找到,401是密钥错误)。
实操技巧:用Postman或浏览器直接调接口测试!比如在地址栏输入:
https://api.openweathermap.org/data/2.5/weather?q=Hangzhou,CN&appid=你的密钥&units=metric
回车后能看到返回的JSON数据,确认字段对不对。
三、写代码调API:用Python实现“查天气”功能
我用Python写了个小脚本,能输入城市名,输出天气信息。代码不难,跟着抄就行(需要装requests库,pip install requests)。
代码示例:
python
import requests
def get_weather(city):
# API接口地址
url = "https://api.openweathermap.org/data/2.5/weather"
# 参数:城市、密钥、温度单位
params = {
"q": f"{city},CN", # 国内城市加“CN”避免匹配到国外同名城市
"appid": "你的API密钥", # 替换成自己的密钥
"units": "metric"
}
# 调API
response = requests.get(url, params=params)
data = response.json()
# 处理错误(比如城市名错了、密钥失效)
if data.get("cod") != 200:
return f"查天气失败:{data.get('message')}"
# 提取需要的信息
temp = data["main"]["temp"]
weather_desc = data["weather"][0]["main"]
wind_speed = data["wind"]["speed"]
return f"{city}当前天气:{weather_desc},温度{temp}℃,风速{wind_speed}米/秒"
# 测试:查杭州天气
print(get_weather("杭州"))
跑通测试:
运行脚本,输出应该是:
杭州当前天气:Clear,温度28℃,风速2.5米/秒(具体数据看实时天气)。
常见问题:
输出“city not found”→ 检查城市名拼写(比如“杭州”写成“Hang Zhou”中间没空格);
输出“Invalid API key”→ 密钥填错了,重新复制粘贴一遍;
温度是290→ 没加units=metric,默认开尔文(开尔文转摄氏度:290-273=17℃)。
四、把API接到机器人里:用户问“天气”,自动调接口
以“骑行助手”为例,用户发“明天上海能骑车吗?”,机器人需要:
1.识别“上海”和“明天”;
2.调OWM的“5天预报”接口,查明天的天气;
3.根据“无雨+风速≤5米/秒”判断“适合骑行”,返回建议。
具体接入步骤(用低代码平台Coze):
加“用户输入节点”:
触发词设为“天气”“能骑车吗”,用正则提取城市(如“上海”)和时间(如“明天”)。
加“API调用节点”:
选“自定义API”,填地址https://api.openweathermap.org/data/2.5/forecast,参数:
oq:{{用户输入.城市}},CN;
oappid:你的密钥;
ounits:metric;
ocnt:8(预报每3小时一次,8个数据点是24小时,对应“明天”)。
加“逻辑判断节点”:
解析API返回的预报数据,挑出“明天白天”的时段(比如9:00-18:00),检查:
oweather[0].main不是“Rain”“Thunderstorm”;
owind.speed≤5米/秒。
加“输出节点”:
符合条件→“明天{{城市}}晴,温度{{temp}}℃,风速小,适合骑行~”;
不符合→“明天{{城市}}有雨/风大,建议改期哦~”。
测试技巧:用“成都”“北京”等不同城市测,故意输错城市名(如“成嘟”),看机器人会不会提示“城市没找到,请检查拼写~”。
五、上线后:防“薅羊毛”+ 定期维护
API不是“一接就万事大吉”,得盯着这两件事:
限制调用次数:
OWM免费套餐每天限1000次调用,要是用户疯狂问“天气”,可能超量。在平台设“频率限制”(比如每人每小时最多问5次),或者自己写代码统计调用量(用Redis存用户ID和调用次数)。
监控错误日志:
每周看后台日志,统计“401 Unauthorized”(密钥失效)、“429 Too Many Requests”(超量)、“404 Not Found”(城市名错)的次数,针对性解决(比如提醒用户正确输入城市名,定期换密钥)。
总结
调API没你想的那么难——注册拿密钥→读文档摸规则→写代码调接口→接到工具里→上线后维护,五步走就能搞定。关键是“别怕看文档”(OWM的文档有中文翻译),“多测试边界情况”(比如用户输“火星天气”,机器人得答“查无此城市”)。
现在,打开你的API密钥,按这节的步骤试试吧!记住:API是“外部数据的门”,打开它,你的工具就能从“本地小工具”变成“连网大助手”。
本站原创,转载请注明出处:https://www.xin3721.com/ArticlePrograme/robot/52915.html