Skip to content

[feat] 현재 날씨 API 백엔드 이전 #149

Description

@yousung1020

📝 기능 설명
기존 프론트엔드에서 직접 호출하던 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 키가 코드나 응답에 노출되지 않도록 합니다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions