介绍一个比较有实用的天气接口。地址 :https://www.apixu.com/
先说明一下他的一些优势:
0.免费,但有次数限制(5000次/月);
1.可查询多个国家城市的天气情况;
2.可查询多达 30 天的历史天气;
3.可查询 10 天内的天气预报,并包括每小时的天气情况。
4.当然也可以查询当天实现天气情况。
5.有比较全的数据字段,并且可自选是否返回。
当然有也一些不方便的地方。这个接口是国外的,请求接口所花时间较长。有时他们接口也会自行维护,但没有发送邮箱。次数限制 5000 次/月。不过总的来说,做开源项目,或者个人项目是不错的。但不建议商用。说到这,安利一个用 Apixu 接口做的天气应用 SimpleWeather。
简单使用
首先简单登录注册后,打开个人主页得到 Api Key, 之后就可以 happy 的使用了。
login
my
个人体验接口:
实时天气:http://api.apixu.com/v1/current.json?key=bd6cf545b42d43cb96184023172905&lang=zh&q=beijing
7天内的天气预报:https://api.apixu.com/v1/forecast.json?key=bd6cf545b42d43cb96184023172905&lang=zh&q=beijing&days=7
相关接口说明
0.请求说明
0.1 请求 URL
请求 Apixu API 由基础 URL 和 API 方法组成。 您可以向 API 发出 HTTP 或 HTTPS 请求。
基础 URL : http://api.apixu.com/v1
| API | API Method |
|---|---|
| Current weather | /current.json or /current.xml |
| Forecast | /forecast.json or /forecast.xml |
| Search or Autocomplete | /search.json or /search.xml |
| History | /history.json or /history.xml |
0.2 请求参数
<table>
<tr>
<th>Parameter</th>
<th> </th>
<th>Description</th>
</tr>
<tr>
<td>key</td>
<td>Required</td>
<td>API Key</td>
</tr>
<tr>
<td> q </td>
<td>Required</td>
<td>
查询城市对应的参数。
1.经纬度 e.g: q=48.8567,2.3508
2.城市名称 e.g.: q=Paris
3.美国邮编 e.g.: q=10001
4.英国邮编 e.g: q=SW1
5.加拿大邮政编码 e.g: q=G2J
6.metar:metar code e.g: q=metar:EGLL
7.iata:3 digit airport code e.g: q=iata:DXB
8.auto:ip IP lookup e.g: q=auto:ip
9.IP address (IPv4 and IPv6 supported) e.g: q=100.0.0.1
</td>
<tr>
<td>days</td>
<td>仅用于预测 API 请求</td>
<td>
需要预测的天数。
天参数值范围介于1到10。 e.g:days= 5
如果没有提供天数参数,那么仅返回今天的天气。</td>
</tr>
<tr>
<td>dt (历史 API 必要参数)</td>
<td>用于限制 history and forecast API 天气日期输出(格式为 yyyy-MM-dd)</td>
<td>
1. history API 用于检当天历史天气
2. forecast API 用于限制查询,今天到输入的日期之间。
</td>
</tr>
<tr>
<td>unixdt(可选项)</td>
<td>用于限制 history and forecast API 的 Unix 时间戳。</td>
<td>
unixdt 与 dt 参数具有相同的限制。 请通过'dt'或'unixdt',而不是在同一请求中。e.g:unixdt = 1490227200。
</td>
</tr>
<tr>
<td> end_dt (可选项,可用于 history API)</td>
<td>限制 forecast API 的日期输出(格式为 yyyy-MM-dd)</td>
<td>
对于 history API(dt = 2015-01-01)在 2015 年 1 月 1 日或之后。<br/>
'end_dt'应该大于'dt'参数,两个日期之间不应超过30天。
</td>
</tr>
<tr>
<td> unixend_dt (可选项)</td>
<td>用于 forecast API </td>
<td>
unixend_dt 与 end_dt 参数具有相同的限制。<br/> 请通过 end_dt 或 unixend_dt ,而不是两者都在相同的请求中。 例如:unixend_dt = 1490227200
</td>
</tr>
<tr>
<td> hour (可选项)</td>
<td> 将 history or forecast 输出限制在指定日期的特定时间。
</td>
<td>
hour 取值必须在 24 小时内。 例如:下午 5 点应该是 hour = 17,早上 6 点,hour = 6
</td>
</tr>
<tr>
<td> lang (可选项)</td>
<td> "condition:text" 的返回参数中的语言
</td>
<td>
从下表(0.3)中选择 "lang code" e.g.: lang=zh
</td>
</tr>
</tr>
</table>
0.3 可选国家对应 lang code
| Language | lang code |
|---|---|
| Arabic | ar |
| Bengali | bn |
| Bulgarian | bg |
| Chinese Simplified | zh |
| Chinese Traditional | zh_tw |
| Czech | cs |
| Danish | da |
| Dutch | nl |
| Finnish | fi |
| French | fr |
| German | de |
| Greek | el |
| Hindi | hi |
| Hungarian | hu |
| Italian | it |
| Japanese | ja |
| Javanese | jv |
| Korean | ko |
| Mandarin | zh_cmn |
| Marathi | mr |
| Polish | pl |
| Portuguese | pt |
| Punjabi | pa |
| Romanian | ro |
| Russian | ru |
| Serbian | sr |
| Sinhalese | si |
| Slovak | sk |
| Spanish | es |
| Swedish | sv |
| Tamil | ta |
| Telugu | te |
| Turkish | tr |
| Ukrainian | uk |
| Urdu | ur |
| Vietnamese | vi |
| Wu (Shanghainese) | zh_wuu |
| Xiang | zh_hsn |
| Yue (Cantonese) | zh_yue |
| Zulu | zu |
1. 当前最新天气情况
1.0 返回总览
| 名称 | 类型 | 说明 |
|---|---|---|
| location | element | 位置信息 |
| current | element | 当前天气情况 |
1.1 current Element(当前天气)
| 名称 | 类型 | 说明 |
|---|---|---|
| last_updated | string | 最后实时数据更新时间 e.g 2017-05-29 11:56 |
| last_updated_epoch | int | 最后实时数据更新时间 (1496051817) |
| temp_c | decimal | 温度(摄氏 celsius) |
| temp_f | decimal | 温度(华氏 fahrenheit) |
| feelslike_c | decimal | 人体舒适度(摄氏) |
| feelslike_f | decimal | 人体舒适度(华氏) |
| condition:text | string | 天气描述(e.g:晴) |
| condition:icon | string | 天气图标 |
| condition:code | int | 天气编码 |
| wind_mph | decimal | 风速(英里/h) |
| wind_kph | decimal | 风速(km/h) |
| wind_degree | int | 风的角度 |
| wind_dir | string | 风向 16 方位图 |
| pressure_mb | decimal | 大气压强(mb) |
| pressure_in | decimal | 大气压强(英寸) |
| precip_mm | decimal | 降水量(毫米) |
| precip_in | decimal | 降水量(英寸) |
| humidity | int | 湿度百分比 |
| cloud | int | 云层的百分比 |
| is_day | int | 是否显示日期图标或夜晚图标 |
1.2 location Element(位置信息)
| 名称 | 类型 | 说明 |
|---|---|---|
| name | String | 城市名称 |
| region | String | 区域 |
| country | String | 国家名称 |
| lat | decimal | 经度 |
| lon | decimal | 纬度 |
| tz_id | String | 时区 e.g: Asia/Shanghai |
| localtime_epoch | int | 最后更新时间戳(毫秒) |
| localtime | String | 最后更新时间(2017-05-30 3:06) |
2.Forecast and History 天气预报与历史天气
因为请求返回的参数格式是一致的。所以到这个放在一起了
2.0 返回总览
| 名称 | 类型 | 说明 |
|---|---|---|
| location | element | 位置信息(参照 1.2) |
| current | element | 当前天气情况(参照 1.1) |
| forecastday | element | 天气预报 |
2.1 forecastday element (天气预报)
| 名称 | 类型 | 说明 |
|---|---|---|
| date | string | 预报日期(2017-05-30) |
| date_epoch | int | 预报日期(1496102400) |
| day | element | 具体这一天的情况 |
| astro | element | 这天的天文情况 |
| hour | element | 具体每小时内的天气情况 |
2.2 day Element 类型数据
| 名称 | 类型 | 说明 |
|---|---|---|
| maxtemp_c | decimal | 当天最高温度(摄氏) |
| maxtemp_f | decimal | 当天最低温度(华氏) |
| mintemp_c | decimal | 当天最高温度(摄氏) |
| mintemp_f | decimal | 当天最低温度(华氏) |
| avgtemp_c | decimal | 当前的平均温度(摄氏) |
| avgtemp_f | decimal | 当前的平均温度(华氏) |
| maxwind_mph | decimal | 最大风速(mile/h) |
| maxwind_kph | decimal | 最大风速(km/h) |
| totalprecip_mm | decimal | 总降水量(毫米) |
| totalprecip_in | decimal | 总降水量(英寸) |
| avgvis_km | decimal | 平均可见度(公里) |
| avgvis_miles | decimal | 平均可见度(英里) |
| avghumidity | int | 平均湿度(百分比) |
| condition:text | string | 天气描述(晴) |
| condition:icon | string | 天气图标 |
| condition:code | int | 天气编码 |
2.3 astro Element 天文元素详细
| 名称 | 类型 | 说明 |
|---|---|---|
| sunrise | string | Sunrise time |
| sunset | string | Sunset time |
| moonrise | string | Moonrise time |
| moonset | string | Moonset time |
2.4 hour Element 每小时天气详情
| 名称 | 类型 | 说明 |
|---|---|---|
| time_epoch | int | 时间点毫秒(1496073600) |
| time | string | 时间点(2017-05-30 00:00) |
| temp_c | decimal | 温度(摄氏) |
| temp_f | decimal | 温度(华氏) |
| condition:text | string | Weather condition text |
| condition:icon | string | Weather condition icon |
| condition:code | int | Temperature in code |
| wind_mph | decimal | 最大风速(英里/小时) |
| wind_kph | decimal | 最大风速(千里/小时) |
| wind_degree | int | 风的方向角度 |
| wind_dir | string | 风的编码。 e.g.: NSW |
| pressure_mb | decimal | 大气压强(mb) |
| pressure_in | decimal | 大气压强(英寸) |
| precip_mm | decimal | 降水量(毫米) |
| precip_in | decimal | 降水量(英寸) |
| humidity | int | 温度(百分比) |
| cloud | int | 云层(百分比) |
| feelslike_c | decimal | 人体舒适度指数(摄氏) |
| feelslike_f | decimal | 人体舒适度指数(华氏) |
| windchill_c | decimal | 风寒指数(摄氏) |
| windchill_f | decimal | 风寒指数(华氏) |
| heatindex_c | decimal | 热指数(摄氏) |
| heatindex_f | decimal | 热指数(华氏) |
| dewpoint_c | decimal | 露点(摄氏) |
| dewpoint_f | decimal | 露点(华氏) |
| will_it_rain | int | 是否会下雨(1,是;0,否) |
| will_it_snow | int | 是否会下雪(1,是;0,否) |
| is_day | int | 是否显示日期图标或夜晚图标(1,是;0,否) |
| vis_km | decimal | 可见度(公里) |
| vis_miles | decimal | 可见度(英里) |
ERRORS 错误码
如果有错误,API 响应包含错误消息,包括以下 4xx HTTP 状态代码的错误代码。
| HTTP | Status Code | Error code Description |
|---|---|---|
| 401 | 1002 | API key not provided. |
| 400 | 1003 | Parameter 'q' not provided. |
| 400 | 1005 | API request url is invalid |
| 400 | 1006 | No location found matching parameter 'q' |
| 401 | 2006 | API key provided is invalid |
| 403 | 2007 | API key has exceeded calls per month quota. |
| 403 | 2008 | API key has been disabled. |
| 400 | 9999 | Internal application error. |
返回错误信息
{"error":{"code":1005,"message":"API URL is invalid."}}












网友评论