天气JSON API,不限次数获取十五天的天气预报
天气JSON API,不限次数获取十五天的天气预报
weather.api/src/main/resources/citycode-2019-08-23.json
##免费天气接口说明
- 当前天气接口是用Springboot2.1.11 集成 Ehcache。
- 接口由https://www.sojson.com 免费提供。
- 用于个人学习,小型网站,商业用途请联系站长付费。
- 具体接口规则请查看:https://www.sojson.com/blog/305.html
##技术讲解
- 请求 sojson 采用了RestTemplate请求,具体看 WeatherManager.java
- 缓存采用 Ehcache ,配置文件请看 ehcache.xml 这里采用了ttl配置。解决了缓存过期和更新的问题。
##项目使用
项目启动后,比如访问北京的天气,链接为:http://127.0.0.1:8972/api/city/101010100
本站之前提供了免费接口:https://www.sojson.com/blog/234.html,但是由于访问量太大,对本站“SOJSON 在线工具”请求经常有影响,现在不得不改变接口地址。原接口需要停用。去年就已经停用,目前每天还有800万每天的调用量,你们这些无耻之徒。
有问题请加QQ群:608222884
(验证消息“sojson api
”)必须带验证消息,不然不会过。
紧急情况说明:
禁用IP列表:
39.104.69.*(原因39.104.69.6 在2018年10月的 17~20日 排行为top 1,每天几十万次。)
47.98.211.* (原因47.98.211.131 在2018年11月份长期每天30~40万次每天)
2019年05月14日15:02:25 更新禁用IP列表如下:
121.40.192.*,111.61.21.*,60.29.188.*,61.164.49.*,39.107.58.*,117.90.4.*,49.82.107.*,223.242.131.*,61.150.107.*,45.32.90.*,124.160.11.*,59.173.243.*,140.143.7.*,123.139.56.*,58.40.228.*,106.2.232.*,118.186.228.*,47.99.107.*,59.49.50.*,183.95.250.*,202.115.193.*,47.106.181.*,124.163.225.*,111.77.20.*,106.57.6.*,218.241.82.*,59.55.49.*,223.247.165.*,113.239.198.*,183.188.90.*,47.110.42.*,47.101.65.*,39.104.69.*,106.56.247.*,202.204.214.*,49.4.95.*,101.224.74.*,106.92.157.*,114.95.87.*,58.38.47.34,188.131.154.*,1.202.142.*,218.3.243.*,47.98.211.*,183.194.169.135,118.113.200.*,47.92.165.222,39.107.225.34
天气接口优化点:
1.接口每8小时更新一次,机制是 CDN 缓存8小时更新一次。注意:“自己做缓存,因为你每请求我一次,我就是有费用的,又拍云 CDN加速回源是按次收费,你可以了解下”。
2.接口采用城市ID来精准查询请求,具体每个城市对应的ID可以查看下面的文件“city.json”
每个城市的city_code
字段,如果是""
,就是省份不能直接查询天气。
3.如果需要1个小时更新一次的接口,并且支持 https ,需要付费800
元,不限次数,永久有效,不足一年按 12 / 8 * 使用月数退款,提供公司盖章收据。
4.每分钟阈值为300次,如果超过会禁用一天。请谨慎使用。
5.增加了独立的年月日字段:ymd 如“2018年12月12日” 原来的date改成了独立的日,如12,增加了独立的星期字段week:如“星期日”,具体看下面返回值说明。
6.天气取消了昨天天气,增加到了15天天气(2019年02月16日更新)
接口自问自答
1、接口能不能 ajax jsonp 的方式调用?
答:不能,必须后端语言,比如 Java 、PHP、C#,PY等。 注:Android,iOS 之类直接调用,我发现后会封掉,建议后端调用。
2、接口每天的更新时间是什么时候?
答:天气更新时间为每天的:3点,8点,13点,19点,所以建议不要凌晨去获取,加上CDN有1个小时的缓存,建议4点,9点,14点,20点后获取。
3、接口稳定吗?
答:应该,也许、如果的话,是稳定的。如果不明白的话,你摸着良心觉得您问的是不是废话。
4、天气有哪些状态?天气图片哪里获取?
答:请加QQ群:608222884
(验证消息“sojson api
”),群内有全部的类型和参考文件。此群不收费,不要发广告。
5、提示403是怎么回事?
答:此接口理论上不限制次数,如果你一天需要调用大量,比如几十万次一天必封无疑。几万次也有封的可能性比如一瞬间高并发调用,我会酌情考虑封掉。
6、提示有恶意调用是什么意思?
答:因为你一直循环调用,没有做缓存,对服务器造成了很大的压力,请参照第五点。
新天气接口请求参数:
Java 请求 天气接口 Demo讲解:https://www.sojson.com/blog/349.html (Springboot + Ehcache)
具体请看下面的city.json文件,下面以天津举例,其他城市ID,请看最下面的城市数据。
- {
- "id": 26,//没有用
- "pid": 0,//没有用,级联关联的上级ID
- "city_code": "101030100",//城市ID
- "city_name": "天津",//城市name
- "post_code": "300000",//邮政编码,这个没有用,您自己的API可以通过邮政编码来转换
- "area_code": "022",//区号,这个没有用,您自己的API可以通过这个来转换
- "ctime": "2019-07-11 17:30:08"//这个没有用
- }
上面不算参数,只是对于city.json
文件说明一下,有用的参数就city_code的值
。其他的都没用,数据提供全一点,希望对您有帮助
那天津对于的ID就是city_code:101030100。
请求链接:http://t.weather.sojson.com/api/weather/city/101030100就这个链接,然后get请求,不用再带任何参数。请求是restfull
风格,city_code 为9
位数字。只要拼接在地址 “http://t.weather.sojson.com/api/weather/city/+
city_code” 后面即可。
接口返回值:
接口成功返回值:
- {
- "time": "2018-09-22 12:37:21",//系统更新时间
- "cityInfo": {
- "city": "天津市", //请求城市
- "cityKey": "101030100",//请求ID
- "parent": "天津", //上级,一般是省份
- "updateTime": "12:32"//天气更新时间
- },
- "date": "20180922", //当前天气的当天日期
- "message": "Success !", //返回message
- "status": 200, //返回状态
- "data": {
- "shidu": "22%", //湿度
- "pm25": 15.0, //pm2.5
- "pm10": 46.0, //pm10
- "quality": "优", //空气质量
- "wendu": "24", //温度
- "ganmao": "各类人群可自由活动",//感冒提醒(指数)
- "forecast": [//今天+未来14天
- {
- "date": "22",
- "ymd": "2018-09-22", //年月日 (新增)
- "week": "星期六", //星期 (新增)
- "sunrise": "05:57",
- "high": "高温 26.0℃",
- "low": "低温 15.0℃",
- "sunset": "18:10",
- "aqi": 55.0,
- "fx": "西北风",
- "fl": "4-5级",
- "type": "晴",
- "notice": "愿你拥有比阳光明媚的心情"
- },
- {
- "date": "23",
- "ymd": "2018-09-22", //年月日 (新增)
- "week": "星期日", //星期 (新增)
- "sunrise": "05:58",
- "high": "高温 23.0℃",
- "low": "低温 14.0℃",
- "sunset": "18:09",
- "aqi": 29.0,
- "fx": "西北风",
- "fl": "4-5级",
- "type": "晴",
- "notice": "愿你拥有比阳光明媚的心情"
- },
- {
- "date": "24",
- "ymd": "2018-09-22", //年月日 (新增)
- "week": "星期一", //星期 (新增)
- "sunrise": "05:59",
- "high": "高温 24.0℃",
- "low": "低温 15.0℃",
- "sunset": "18:07",
- "aqi": 25.0,
- "fx": "西北风",
- "fl": "<3级",
- "type": "晴",
- "notice": "愿你拥有比阳光明媚的心情"
- },
- {
- "date": "25",
- "ymd": "2018-09-22", //年月日 (新增)
- "week": "星期二", //星期 (新增)
- "sunrise": "06:00",
- "high": "高温 24.0℃",
- "low": "低温 16.0℃",
- "sunset": "18:05",
- "aqi": 56.0,
- "fx": "西南风",
- "fl": "<3级",
- "type": "晴",
- "notice": "愿你拥有比阳光明媚的心情"
- },
- {
- "date": "26",
- "ymd": "2018-09-22", //年月日 (新增)
- "week": "星期三", //星期 (新增)
- "sunrise": "06:01",
- "high": "高温 24.0℃",
- "low": "低温 17.0℃",
- "sunset": "18:04",
- "aqi": 86.0,
- "fx": "西南风",
- "fl": "3-4级",
- "type": "阴",
- "notice": "不要被阴云遮挡住好心情"
- }
- ]
- }
- }
参数错误返回值:
{
"time": "2018-09-22 12:45:29",
"message": "CityId不在返回之内。",
"status":403
}
参数数位不对返回值:
{
"message": "Request resource not found.",
"status": 404
}
城市数据:
请在百度网盘下载:链接: https://pan.baidu.com/s/1JFAwnH2MRLc5OD3hsJZwGQ
提取码: u8sk
JSON City:https://github.com/baichengzhou/weather.api/blob/master/src/main/resources/citycode-2019-08-23.json
有问题请加QQ群:608222884 (验证消息“sojson api”)
如果需要https
,并且每个小时更新天气状况,请加群后联系群主,付费800元
,永久有效,不限次数。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/305.html
转载时必须以链接形式注明原始出处及本声明。