📝 기능 설명
기존 프론트엔드에서 직접 호출하던 OpenWeather 현재 날씨 API를 백엔드로 이전합니다.
백엔드가 OpenWeather API를 호출하고, 앱에는 기존 백엔드의 공통 응답 형식에 맞춰 가공한 날씨 데이터를 제공합니다.
🎯 주요 작업 내용
- OpenWeather Current Weather Data 연동
- 앱 → 백엔드 요청 데이터 구현
- city: string, 필수
- countryCode: string, 필수
- 백엔드 → 앱 응답 데이터 구현
- 공통 응답 형식과 응답 코드는 기존 백엔드 규칙 준수
- 날씨 데이터는 result 내부에 포함
응답 데이터 예시는 다음과 같습니다.
{
"locationName": "Seoul",
"conditionCode": "CLEAR",
"description": "맑음",
"temperatureCelsius": 23.4
}
- 외부 응답 필드 매핑
- name → locationName
- weather[0].main → conditionCode
- weather[0].description → description
- main.temp → temperatureCelsius
- conditionCode 변환 규칙 구현
- Clear → CLEAR
- Clouds → CLOUDS
- Rain → RAIN
- Drizzle → DRIZZLE
- Thunderstorm → THUNDERSTORM
- Snow → SNOW
- Mist, Smoke, Haze, Dust, Fog, Sand, Ash, Squall, Tornado → ATMOSPHERE
- 그 외 알 수 없는 값 → UNKNOWN
- 요청값 및 외부 API 오류 처리
- 필수 요청값 누락 또는 유효하지 않은 요청 처리
- OpenWeather API 호출 실패 처리
- 외부 응답에 필수 데이터가 없는 경우 처리
- 기존 백엔드의 오류 응답 및 응답 코드 규칙 준수
- 테스트 작성
- 정상적인 날씨 조회
- conditionCode 변환
- 대기 상태 값의 ATMOSPHERE 변환
- 알 수 없는 상태의 UNKNOWN 변환
- 필수 요청값 검증
- 외부 API 오류 및 응답 데이터 누락 처리
💡 기타 참고 사항
- 기존 앱이 사용하던 외부 API 원본 응답 필드명을 앱에 그대로 노출하지 않습니다.
- 앱에서 전달하는 city, countryCode를 외부 API 요청의 q 값으로 조합합니다.
- temperatureCelsius는 섭씨 단위의 숫자로 반환합니다.
- API 키가 코드나 응답에 노출되지 않도록 합니다.
📝 기능 설명
기존 프론트엔드에서 직접 호출하던 OpenWeather 현재 날씨 API를 백엔드로 이전합니다.
백엔드가 OpenWeather API를 호출하고, 앱에는 기존 백엔드의 공통 응답 형식에 맞춰 가공한 날씨 데이터를 제공합니다.
🎯 주요 작업 내용
응답 데이터 예시는 다음과 같습니다.
{
"locationName": "Seoul",
"conditionCode": "CLEAR",
"description": "맑음",
"temperatureCelsius": 23.4
}
💡 기타 참고 사항