我要在一支登山的作品裡顯示天氣。要的東西很普通:氣溫、降雨、未來幾天的變化。
天氣服務不缺。但在挑之前,有一件事得先決定:這支作品要不要有後端。這個決定不是技術偏好,是被來源逼出來的。
同一組座標,兩個來源
────────────────────────────────────
Open-Meteo 免金鑰 16 天預報
稜線 13 支在用
氣象署平臺 要金鑰 不帶就 401
稜線 5 支在用
────────────────────────────────────
自報網格高度 3861 公尺
玉山主峰標高 3952 公尺 差 91 公尺
────────────────────────────────────
免金鑰那條,省下的是一整層
2026-09-17 實測,Open-Meteo 不帶任何授權標頭直接回 200,免金鑰、免註冊。一次可以拿 16 天預報。
這件事的重量不在「免費」,在你不必藏東西。沒有金鑰要藏,就可以讓使用者的瀏覽器直接去要資料,整支作品是一個靜態網頁,丟上去就會動。沒有後端的作品,只能用不需要金鑰的來源。 稜線有 13 支走這條路,理由全部是同一個。
要金鑰那條,貴在多一個會壞的地方
氣象署開放資料平臺不帶 Authorization 直接打,回的是 HTTP 401,訊息是 Authorization key is not correct.。
這一行決定的事比它看起來多。金鑰不能寫進前端網頁,因為前端的東西使用者全看得到;所以你得放一台伺服器在中間代打,把金鑰留在那裡。只要有一個來源需要金鑰,你就從一個網頁變成一個網頁加一台機器。 要部署、要維護、要看它有沒有掛。
稜線有 5 支付了這個代價,換到的是台灣本地的官方數字。值不值得,看你的讀者要不要那個「官方」。
它給的溫度,是哪個高度的溫度
兩條路都回得很順,真正的差別藏在別的地方。
拿玉山主峰的座標去問 Open-Meteo,回應裡有一個 elevation 欄位,它自報的網格高度是 3861 公尺。那座山的實際標高是 3952 公尺。差 91 公尺。
所以你拿到的那個溫度,是 3861 公尺那一格的溫度,不是山頂的溫度。
它沒有算錯,它從一開始算的就是網格——一整格的平均地形。山峰那種尖的地方會被抹平,深谷也一樣。免金鑰、預報天數長,代價就在這裡:地形細節看不到。這不是準不準的問題,是解析度的問題,重打幾次不會變準。
可以拿去改的起點
接任何一個天氣服務之前,先問清楚它在講哪個高度。多數服務會自己招,只是你沒去看:
1. 拿你要的座標打一次,看回應最前面的欄位 B=https://api.open-meteo.com/v1/forecast Q=latitude=23.47&longitude=120.96 curl -s "$B?$Q¤t=temperature_2m" 2. 找 elevation 那個欄位,記下數字 3. 去查同一個地點的宣稱標高 (山頂標高牌、地圖印的高程、官方資料都算) 4. 兩個相減,看差幾公尺 差到幾十公尺以上 → 你看的是山腰的天氣 差在個位數 → 地形平緩,可以直接用 沒有 elevation 欄位的服務,先當它「不知道在 講哪個高度」,不要預設它講的是你那個點。
站內延伸
來源: Open-Meteo forecast 端點(含 elevation 欄)、氣象署開放資料平臺未帶授權標頭的回應,皆為 2026-09-17 當日實測。
選來源不是選誰比較準,是選你要付哪一種代價。免金鑰那條讓你省掉一整層後端,代價是它只能講網格;官方那條給你台灣本地的權威值,代價是金鑰、後端跟長期維護。先看清楚自己在付什麼,再決定要不要付。