Skip to content

날씨 위젯 구현 및 다양한 기능 개선 #7

@3unbum

Description

@3unbum

목표

기상청 단기예보 API를 활용하여 실시간 날씨 정보를 제공하는 위젯을 구현하고, 다양한 기능 개선 및 버그를 수정하여 안정적인 서비스 제공

문제 설명

날씨 위젯 구현 과정에서 다음과 같은 여러 문제들이 발생했습니다:

  1. API 인증 오류로 인한 데이터 조회 실패
  2. 날짜/시간 표시 형식 문제
  3. 환경 변수 처리 문제
  4. 하드코딩된 API 키의 보안 이슈

구현된 기능

API 연동

  • 기상청 단기예보 API 연동
  • 실시간 날씨 데이터 조회
  • 에러 처리 및 로딩 상태 관리

날씨 정보 표시

  • 현재 기온 표시
  • 날씨 상태(맑음, 흐림 등) 아이콘 표시
  • 강수 형태 정보 표시
  • 습도, 풍속 등 상세 정보 제공
  • 발표 시각 정보 표시

스타일링

  • 반응형 디자인 적용
  • 날씨 상태별 아이콘 구현
  • 직관적인 UI 레이아웃

해결한 문제들

1. API 인증 오류

  • 문제: SERVICE_KEY_IS_NOT_REGISTERED_ERROR 발생
  • 원인: API 키의 인코딩/디코딩 처리 문제
  • 해결: URL에 직접 API 키를 포함하는 방식으로 변경

2. 날짜/시간 표시

  • 문제: 부적절한 날짜 포맷팅
  • 해결: formatDateTime 함수 구현으로 사용자 친화적 형식으로 변경
const formatDateTime = (fetchTime) => {
   if (!fetchTime) return '';
   
   const [date, time] = fetchTime.split(' ');
   const year = date.substring(0, 4);
   const month = date.substring(4, 6);
   const day = date.substring(6, 8);
   const hour = time.substring(0, 2);
   const minute = time.substring(2);

   return `${year}년 ${month}월 ${day}일 ${hour}:${minute} 발표`;
};

3. 환경 변수 처리

  • 문제: 하드코딩된 API 키
  • 해결: .env 파일을 사용한 환경 변수 관리로 전환
REACT_APP_WEATHER_API_KEY=your_api_key_here

테스트 체크리스트

  • API 호출 및 데이터 수신 정상 작동
  • 날씨 정보 정확히 표시
  • 날짜/시간 형식 정상 표시
  • 환경 변수 정상 작동
  • 반응형 디자인 정상 작동
  • 에러 처리 정상 작동

개선 사항

코드 품질

  • API 키 관리 방식 개선
  • 에러 처리 로직 강화
  • 코드 모듈화 개선

UI/UX

  • 날씨 변화 트렌드 시각화 추가 필요
  • 상세 날씨 정보 모달 구현 필요
  • 애니메이션 효과 추가 고려

기능

  • 시간별 날씨 예보 추가 필요
  • 위치 기반 날씨 정보 제공 개선
  • 새로고침 기능 추가 필요

현재 상태

  • 기본적인 날씨 정보 표시 정상 작동
  • API 연동 안정적으로 작동
  • 사용자 친화적 UI 구현 완료
  • 환경 변수 처리 구현 완료

결론

기상청 API를 활용한 날씨 위젯의 기본 기능 구현을 완료했습니다. API 인증, 날짜 표시, 환경 변수 처리 등의 문제들을 해결하여 안정적인 서비스를 제공할 수 있게 되었습니다. 향후 추가 기능 구현과 UI/UX 개선을 통해 더 나은 사용자 경험을 제공할 예정입니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions