好用的免费API能加速你的项目开发
做个人项目或快速原型时,你经常需要各种数据接口:天气信息、汇率转换、随机图片、AI能力等等。手动收集这些API很费时间,今天我帮你整理好了。
天气类API
| API | 免费额度 | 特色 | 需要Key |
|---|
| OpenWeatherMap | 1000次/天 | 最流行 | 是 |
| WeatherAPI | 1M次/月 | 功能全面 | 是 |
| Open-Meteo | 无限(非商用) | 无需注册 | 否 |
| 和风天气 | 1000次/天 | 中国天气精准 | 是 |
Open-Meteo调用示例
// 无需API Key,直接调用
const response = await fetch(
'https://api.open-meteo.com/v1/forecast?' +
'latitude=39.9042&longitude=116.4074' +
'¤t=temperature_2m,wind_speed_10m' +
'&daily=temperature_2m_max,temperature_2m_min' +
'&timezone=Asia/Shanghai'
);
const data = await response.json();
console.log(`北京当前温度: ${data.current.temperature_2m}°C`);
汇率和金融类API
| API | 免费额度 | 更新频率 | 货币数 |
|---|
| ExchangeRate-API | 1500次/月 | 每日 | 161 |
| Open Exchange Rates | 1000次/月 | 每小时 | 170+ |
| Frankfurter | 无限 | 每日 | 33 |
| CoinGecko | 10000次/月 | 实时 | 加密货币 |
# Frankfurter汇率API示例(无需Key)
import requests
response = requests.get(
'https://api.frankfurter.app/latest',
params={'from': 'USD', 'to': 'CNY,EUR,JPY'}
)
data = response.json()
print(f"1 USD = {data['rates']['CNY']} CNY")
AI和机器学习API
| API | 免费额度 | 能力 | 推荐 |
|---|
| OpenAI | $5新用户额度 | GPT/DALL-E | 最强LLM |
| Anthropic | 有免费层级 | Claude | 编程最强 |
| Google AI | 免费(Gemini API) | Gemini | 多模态 |
| Hugging Face | 免费(部分模型) | 各种ML模型 | 开源模型 |
| Replicate | 一些免费额度 | 运行ML模型 | 简单部署 |
// 调用Google Gemini API示例
const response = await fetch(
`https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent?key=${API_KEY}`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
contents: [{ parts: [{ text: '用一句话解释什么是API' }] }]
})
}
);
图片和媒体API
| API | 用途 | 免费额度 |
|---|
| Unsplash | 高质量图片 | 50次/小时 |
| Pexels | 免费图片/视频 | 200次/小时 |
| Lorem Picsum | 占位图片 | 无限 |
| Remove.bg | 图片去背景 | 50次/月 |
| Cloudinary | 图片处理 | 25个额度 |
<!-- Lorem Picsum占位图片,无需API Key -->
<img src="https://picsum.photos/800/400" alt="随机图片">
<img src="https://picsum.photos/seed/hello/800/400" alt="固定随机图">
<img src="https://picsum.photos/800/400?grayscale" alt="灰度图">
地图和地理信息API
| API | 免费额度 | 特色 |
|---|
| Mapbox | 50000次/月 | 地图渲染最美 |
| OpenStreetMap/Nominatim | 合理使用 | 完全免费 |
| 高德地图 | 5000次/天 | 国内最准 |
| 百度地图 | 有免费额度 | 国内常用 |
| ip-api.com | 45次/分钟 | IP地理位置 |
新闻和内容API
| API | 免费额度 | 语言 |
|---|
| NewsAPI | 100次/天 | 多语言 |
| GNews | 100次/天 | 多语言 |
| RSS2JSON | 10000次/天 | RSS转JSON |
| Wikipedia | 无限 | 多语言 |
开发工具类API
| API | 用途 | 免费 |
|---|
| GitHub API | 仓库/Issue管理 | 5000次/小时 |
| JSONPlaceholder | 测试用假数据 | 无限 |
| httpbin | HTTP测试 | 无限 |
| ReqRes | 模拟REST API | 无限 |
| Random User | 随机用户数据 | 无限 |
# JSONPlaceholder - 开发测试的好帮手
curl https://jsonplaceholder.typicode.com/posts/1
# httpbin - 测试HTTP请求
curl https://httpbin.org/get
curl -X POST https://httpbin.org/post -d '{"name":"test"}'
# Random User - 生成随机用户
curl 'https://randomuser.me/api/?results=5&nat=cn'
短信和通信API
| API | 免费额度 | 用途 |
|---|
| Twilio | 试用额度 | 短信/语音 |
| Resend | 100封/天 | 邮件发送 |
| Telegram Bot API | 免费 | 聊天机器人 |
| Discord API | 免费 | Discord机器人 |
使用免费API的注意事项
1. 频率限制处理
// 使用指数退避处理频率限制
async function fetchWithRetry(url, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url);
if (response.status === 429) {
const delay = Math.pow(2, i) * 1000;
console.log(`频率限制,${delay}ms后重试...`);
await new Promise(r => setTimeout(r, delay));
continue;
}
return response;
}
throw new Error('超过最大重试次数');
}
2. 缓存策略
| 数据类型 | 建议缓存时间 | 说明 |
|---|
| 汇率 | 1小时-1天 | 变动不频繁 |
| 天气 | 30分钟 | 适度缓存 |
| 新闻 | 15分钟 | 时效性要求较高 |
| 图片 | 1天以上 | 不会变化 |
| 地理位置 | 长期 | 基本不变 |
3. 安全建议
- 不要在前端暴露API Key
- 使用后端代理请求
- 设置CORS正确
- 监控API用量,避免超额
API测试工具
拿到免费API后,用什么工具测试?推荐看看API测试工具对比。如果你想搭建自己的API服务,了解在线开发工具和监控工具也很有帮助。
总结
免费API资源非常丰富,善加利用能大幅加速项目开发。建议收藏本文,需要时按分类查找。注意遵守各API的使用条款,合理使用免费额度,需要生产级服务时考虑升级付费方案。