본문 바로가기

Study Information Technology

날씨 예측 앱 개발 API를 활용한 데이터 가져오기와 표시

728x90
반응형

날씨 예측 앱 개발: API를 활용한 데이터 가져오기와 표시

Overview

날씨 예측 앱을 개발하는 과정에서, API를 활용하여 날씨 데이터를 가져오고 이를 사용자에게 표시하는 것은 핵심적인 부분입니다. 이 글에서는 날씨 예측 앱의 개발 과정을 상세히 설명하겠습니다. 특히 API를 통해 날씨 데이터를 가져오는 방법과 이를 화면에 표시하는 절차를 구체적으로 다루며, 예제 코드와 함께 오류 처리 방법도 설명하겠습니다.


1. API 선택과 인증

날씨 데이터를 얻기 위해서는 신뢰할 수 있는 날씨 API를 선택하는 것이 중요합니다. 대표적인 날씨 API로는 OpenWeatherMap, WeatherAPI, AccuWeather 등이 있습니다.

OpenWeatherMap API를 예로 들어 설명하겠습니다.

  1. 가입 및 API 키 발급
  • OpenWeatherMap의 웹사이트에 가입하여 계정을 생성합니다.
  • 로그인 후, API 키를 발급받습니다. API 키는 API 요청 시 인증을 위해 사용됩니다.
  1. API 문서 확인
  1. 기본 API 요청 형식
    http://api.openweathermap.org/data/2.5/weather?q={city}&appid={your_api_key}
  • {city}: 검색할 도시의 이름
  • {your_api_key}: 발급받은 API 키

2. 날씨 데이터 가져오기

다음으로, 날씨 데이터를 가져오는 방법에 대해 살펴보겠습니다. 예제에서는 Python을 사용한 방법을 설명하겠습니다.

  1. Python Requests 라이브러리 설치

    pip install requests
  2. 날씨 데이터 요청 코드 작성

    import requests
    

def get_weather(city, api_key):
base_url = "http://api.openweathermap.org/data/2.5/weather"
params = {
'q': city,
'appid': api_key,
'units': 'metric', # 온도를 섭씨로 받기
'lang': 'kr' # 한국어로 응답 받기
}
response = requests.get(base_url, params=params)
if response.status_code == 200:
return response.json()
else:
response.raise_for_status()

사용 예제

api_key = "여기_당신의_API_키를_넣으세요"
city = "Seoul"
weather_data = get_weather(city, api_key)
print(weather_data)


이 코드에서 `requests.get()` 메서드를 사용하여 API 엔드포인트에 요청을 보내고, `response.json()` 메서드로 JSON 형식의 응답 데이터를 파싱합니다.

3. **응답 데이터 구조**
```json
{
  "coord": { "lon": 126.9784, "lat": 37.5665 },
  "weather": [{ "id": 801, "main": "Clouds", "description": "few clouds", "icon": "02d" }],
  "base": "stations",
  "main": {
    "temp": 29.5,
    "feels_like": 32.8,
    "temp_min": 29.5,
    "temp_max": 29.5,
    "pressure": 1010,
    "humidity": 70
  },
  "visibility": 10000,
  "wind": { "speed": 4.12, "deg": 270 },
  "clouds": { "all": 18 },
  "dt": 1609459200,
  "sys": {
    "type": 1,
    "id": 5509,
    "country": "KR",
    "sunrise": 1609449057,
    "sunset": 1609491683
  },
  "timezone": 32400,
  "id": 1835848,
  "name": "Seoul",
  "cod": 200
}

이 데이터는 날씨 정보, 온도, 습도, 바람 속도 등의 세부 정보를 포함하고 있습니다.


3. 날씨 데이터 표시

이제 앱의 UI에서 날씨 데이터를 표시하는 방법을 살펴보겠습니다. 예를 들어, 웹 애플리케이션에서 날씨 정보를 표시하는 방법을 설명하겠습니다.

  1. HTML과 CSS로 기본 UI 만들기

    <!DOCTYPE html>
    <html lang="ko">
    <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Weather App</title>
     <style>
       body { font-family: Arial, sans-serif; text-align: center; }
       .weather-container { margin: 20px auto; max-width: 600px; }
       .weather-data { font-size: 1.2em; }
     </style>
    </head>
    <body>
     <div class="weather-container">
       <h1>현재 날씨</h1>
       <div id="weather" class="weather-data"></div>
     </div>
     <script src="script.js"></script>
    </body>
    </html>
  2. JavaScript로 데이터 표시

    document.addEventListener('DOMContentLoaded', function() {
    const apiKey = '여기_당신의_API_키를_넣으세요';
    const city = 'Seoul';
    const url = `http://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric&lang=kr`;
    
    fetch(url)
    .then(response => response.json())
    .then(data => {
     const weather = data.weather[0].description;
     const temp = data.main.temp;
     const humidity = data.main.humidity;
     const windSpeed = data.wind.speed;
    
     document.getElementById('weather').innerHTML = `
     <p>날씨: ${weather}</p>
     <p>온도: ${temp}°C</p>
     <p>습도: ${humidity}%</p>
     <p>바람 속도: ${windSpeed} m/s</p>
     `;
    })
    .catch(error => console.error('Error:', error));
    });

이 코드는 fetch() 메서드를 사용하여 API 요청을 보내고, 받아온 데이터를 HTML 요소에 동적으로 삽입합니다.


4. 오류 처리

API 요청 중 발생할 수 있는 몇 가지 오류와 해결 방법을 소개합니다.

  1. 오류 코드 401: Unauthorized
  • 원인: 잘못된 API 키 사용
  • 해결 방법: API 키를 확인하고, 정확하게 입력합니다.
  1. 오류 코드 404: Not Found
  • 원인: 잘못된 URL 또는 도시 이름
  • 해결 방법: 요청 URL과 도시 이름을 확인하여 올바르게 입력합니다.
  1. 오류 코드 500: Internal Server Error
  • 원인: 서버의 문제
  • 해결 방법: 잠시 후에 다시 시도하거나, API 제공자의 상태 페이지를 확인하여 문제를 확인합니다.

참고문서

이 가이드를 통해 날씨 예측 앱의 핵심적인 부분인 API를 활용한 데이터 가져오기와 표시 방법을 이해하고 구현할 수 있을 것입니다.

728x90
반응형