Open rmdnps10 opened 5 days ago
env.d.ts
declare namespace NodeJS { interface ProcessEnv { API_KEY: string; } }
fetch.ts
import axios, { AxiosResponse } from 'axios'; import { WeatherData } from './type'; const BASE_URL = 'https://api.openweathermap.org/data/2.5'; const LAT = 37.65590833; // 지역의 위도를 넣어주세요! const LON = 126.7770556; // 지역의 경도를 넣어주세요! const API_KEY = process.env.API_KEY; if (!API_KEY) { throw new Error( 'API_KEY가 누락되었습니다.' ); } export const weatherApi = { getWeatherByCity: async (): Promise<WeatherData> => { try { const url = `${BASE_URL}/weather?lat=${LAT}&lon=${LON}&appid=${API_KEY}`; const response: AxiosResponse<WeatherData> = await axios.get<WeatherData>( url ); return response.data; } catch (error) { if (axios.isAxiosError(error)) { const errorMessage = error.response?.data.message || 'API 요청 시 에러가 발생했습니다.'; console.error(`API 요청 에러 : ${errorMessage}`); } else { console.error('예상하지 못한 에러 : ', error); } throw new Error('날씨 데이터 수집에 실패했습니다.'); } }, };
API key 누락 여부 확인 isAxiosArror 로 에러 타입을 좁힘
isAxiosArror
WeatherDisplay는 수정사항 없습니다!
넵 반영해도 좋을 것 같습니다! 다만 코드 구성할 때 최대한 부가적인 기능을 추가한다든가 모듈화를 한다든가 하지 않으려고 노력했습니다! 가장 기본적인 api 구조여야 초보자 입장에서 익숙하기도 하고, 이해가 쉬울 것 같아서요! 감안하고 코드 봐주시면 될 것 같습니다!
env.d.ts
fetch.ts
API key 누락 여부 확인
isAxiosArror
로 에러 타입을 좁힘WeatherDisplay는 수정사항 없습니다!