본문 바로가기

Study Information Technology

기상 애플리케이션 만들기 공공 API를 이용한 현재 날씨 데이터 가져오기

728x90
반응형

기상 애플리케이션 만들기: 공공 API를 이용한 현재 날씨 데이터 가져오기

Overview

기상 애플리케이션을 만들 때, 공공 API를 사용하여 현재 날씨 데이터를 가져오는 방법을 단계별로 설명하겠습니다. 이 예제에서는 OpenWeatherMap API를 사용할 것입니다. 이 API는 사용하기 쉽고, 무료 플랜도 제공하여 개발자들이 테스트할 수 있는 좋은 선택입니다.

1. API 키 얻기

먼저, OpenWeatherMap API를 사용하기 위해 API 키를 발급받아야 합니다. OpenWeatherMap 웹사이트에 가입하여 계정을 만들고 API 키를 생성합니다. 이 키는 API 요청 시 인증을 위해 필요합니다.

2. API 요청 보내기

API 키를 발급받았다면, 날씨 데이터를 가져오기 위해 HTTP GET 요청을 보낼 수 있습니다. 예를 들어, 다음과 같은 요청 URL을 사용할 수 있습니다:

http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}

여기서 {city}는 날씨 정보를 알고 싶은 도시 이름으로, {API_KEY}는 발급받은 API 키로 대체합니다. 예를 들어, 서울의 날씨를 알고 싶다면 다음과 같은 URL을 사용합니다:

http://api.openweathermap.org/data/2.5/weather?q=Seoul&appid=YOUR_API_KEY

3. 데이터 응답 처리

API 요청을 보내면 JSON 형식의 응답을 받게 됩니다. 이 데이터에는 현재 날씨, 온도, 습도, 기온 등 다양한 정보가 포함되어 있습니다. 응답 예시는 다음과 같습니다:

{
  "coord": {
    "lon": 126.9778,
    "lat": 37.5665
  },
  "weather": [
    {
      "id": 802,
      "main": "Clouds",
      "description": "scattered clouds",
      "icon": "03d"
    }
    ],
  "base": "stations",
  "main": {
    "temp": 295.15,
    "feels_like": 295.21,
    "temp_min": 295.15,
    "temp_max": 295.15,
    "pressure": 1013,
    "humidity": 73
  },
  "visibility": 10000,
  "wind": {
    "speed": 1.54,
    "deg": 250
  },
  "clouds": {
    "all": 40
  },
  "dt": 1597318200,
  "sys": {
    "type": 1,
    "id": 5509,
    "country": "KR",
    "sunrise": 1597290078,
    "sunset": 1597343318
  },
  "timezone": 32400,
  "id": 1835848,
  "name": "Seoul",
  "cod": 200
}

이 응답에서 중요한 필드는 다음과 같습니다:

  • weather: 날씨 상태를 설명하는 정보
  • main: 온도, 습도, 기압 등 주요 날씨 데이터
  • wind: 바람 속도와 방향
  • name: 도시 이름

4. 데이터 파싱 및 표시

응답 데이터를 파싱하여 사용자에게 유용한 정보를 제공합니다. 예를 들어, JSON 응답에서 현재 온도와 날씨 상태를 추출하여 화면에 표시할 수 있습니다. 이를 위해 Python을 사용하는 경우, 다음과 같은 코드를 사용할 수 있습니다:

import requests

def get_weather(city, api_key):
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
response = requests.get(url)
data = response.json()

if response.status_code == 200:
temp = data['main']['temp']
weather_description = data['weather'][0]['description']
return f"{city}의 현재 온도는 {temp}°C이고, 날씨는 {weather_description}입니다."
else:
return f"날씨 정보를 가져오는 데 실패했습니다. 에러 코드: {response.status_code}"

# 사용 예
api_key = "YOUR_API_KEY"
city = "Seoul"
print(get_weather(city, api_key))

5. 에러 처리

API 요청 시 에러가 발생할 수 있습니다. 주요 에러 코드와 해결 방법은 다음과 같습니다:

  • 401 Unauthorized: 잘못된 API 키 또는 키 누락. API 키가 올바른지 확인합니다.
  • 404 Not Found: 잘못된 도시 이름. 도시 이름을 확인하고 다시 시도합니다.
  • 500 Internal Server Error: 서버 측 문제. 잠시 후 다시 시도하거나, OpenWeatherMap 지원팀에 문의합니다.

6. 최적화 및 추가 기능

애플리케이션을 더 발전시키기 위해 추가 기능을 고려할 수 있습니다. 예를 들어:

  • 사용자의 현재 위치 기반 날씨 정보 제공
  • 날씨 예보 추가
  • UI를 통해 날씨 정보를 시각적으로 표시

참고문서

728x90
반응형