一、前言
經過前面的書籍 API 和電影 API,
已經實際操作過兩種不同類型的公開 API,
雖然每個 API 提供的資料不一樣,
但使用的方式其實有很多相似的地方,
都是透過 URL 發送 Request,
再從 Response 中取得 JSON 格式的資料。
今天開始要進入第三種 API:天氣 API。
天氣資料也是日常生活中很常見的一種資料,
像是目前溫度、天氣狀況、風速等,都可以透過 API 取得。
因此這次想從天氣 API 開始,
看看不同類型的 API 又會提供什麼樣的資料。
⸻
二、什麼是天氣 API?
天氣 API 簡單來說就是提供天氣相關資料的 Web API。
平常我們使用天氣 App 或網站時,
可以直接看到某個地區目前的溫度、天氣狀況或其他資訊。
不過這些資料並不是只有 App 或網站自己可以使用,
開發者也可以透過 API 向天氣服務取得資料。
例如,我們可以提出類似這樣的請求:
「我想知道某個地點現在的天氣。」
API 收到 Request 後,就會回傳相關的天氣資料。
這和前面使用書籍 API、電影 API 的概念其實很像,
只是這次取得的資料從「書籍」或「節目」變成了「天氣」。
⸻
*三、今天要觀察哪些資料?
今天第一次使用天氣 API,
主要想先確認它到底會回傳哪些資料。
可以觀察:
這次不會一開始就把所有欄位全部研究完,
而是先看看 API 實際回傳的內容,
建立對天氣 API 的基本認識。
⸻
四、查詢天氣 API
這次使用的是 Open-Meteo 提供的公開天氣 API。
Open-Meteo 不需要另外申請 API Key,
就可以直接進行測試,因此很適合拿來做這次的練習。
首先打開手機瀏覽器,輸入以下網址:
https://api.open-meteo.com/v1/forecast?latitude=25.03&longitude=121.56¤t=temperature_2m,relative_humidity_2m,wind_speed_10m
這個網址是在查詢台北地區的目前天氣資料。
打開後,可以看到 API 回傳的 JSON 資料。
可以先找到幾個比較容易理解的部分,例如:
{
"latitude": 25.03,
"longitude": 121.56,
"current": {
"temperature_2m": 30.5,
"relative_humidity_2m": 70,
"wind_speed_10m": 8.2
}
}
實際數值會隨著查詢時間不同而改變,
所以不一定會和上面的數字完全一樣。
從這個結果可以先看到,
API 不只是回傳一個溫度,而是把地點、
目前天氣資料等資訊一起放在 JSON 裡面。
⸻
五、第一次使用天氣 API 的心得
可以注意到,
這次的天氣API和前面的書籍跟電影最大的區別是,
這次的 JSON 裡面出現了 current,
而 current 裡面又放了溫度、濕度和風速等資料。
這也讓我再次看到 JSON 的巢狀結構。
前面 Day 17 已經看過電影 API 裡面的 Object 和 Array,
而這次的天氣 API 也有類似的結構,只是裡面的資料內容不同。
可以發現雖然不同 API 提供的資料完全不一樣,
但閱讀 JSON 的方法還是可以沿用前面學到的方式。
⸻
六、總結
今天是天氣 API 的第一天,
主要先認識什麼是天氣 API,
以及第一次實際向 Open-Meteo 發送請求。
這次查詢到的資料包含地點座標,
以及目前的溫度、濕度和風速等資訊。
目前還沒有深入分析每個欄位的意思,
下一步會繼續實際修改查詢條件,
看看當查詢的地點改變時,
API 回傳的資料會不會跟著改變。
這樣也可以把前面學到的「Parameter 會影響 API 回傳結果」再次實際操作一次。