Golangでopenweathermapを使ってみる
天気予報の個人使用無料のAPIを使ってみたかったので作成。
気象庁が公開している非公式のAPIもありますが、1時間毎のデータを取得できる等のメリットがあるopenweathermapを使用。
FreePlanでアカウントを作成してマイページからAPP_IDをコピペしてリクエストできます。
APP_IDが発行されたばかりではリクエストできず401が帰ってきます。数時間立てばリクエストできるようになります。
試しに東京の天気を取得します。
curl "https://api.openweathermap.org/data/2.5/onecall?lat=35.681236&lon=139.767125&units=metric&lang=ja&appid=#{appId}"
{ "lat": 35.6812, "lon": 139.7671, "timezone": "Asia/Tokyo", "timezone_offset": 32400, "current": { "dt": 1629008734, "sunrise": 1628971183, "sunset": 1629019889, "temp": 19.85, "feels_like": 20.37, "pressure": 1012, "humidity": 95, "dew_point": 19.03, "uvi": 0.37, "clouds": 75, "visibility": 5000, "wind_speed": 2.06, "wind_deg": 350, "weather": [ { "id": 701, "main": "Mist", "description": "霧", "icon": "50d" } ] }, {省略}
大量のデータを取得できます。
これをGoでParseして構造体にするにはこんな感じ。
使ってみてわかったこと。
- 大量のデータを取得できるので色んなことができそう。
- go get で扱えるようにしたい。
- とりあえず動くようにしただけなのでもっと作り込みがしたい。