
봄이 너무 힘들어서 날씨 어플을 만들었다.
사실 이미 잘되어있는 사이트들이 있겠지만 특히 봄인 경우에는 꽃가루 알레르기랑 미세먼지를 좀 봐야되기 때문에 매번 핸드폰에 들어가서 구글에 날씨랑 미세먼지 사이트, 꽃가루 경보 들어가서 가는게 너무 귀찮았다.
그래서 좀 나름대로 어떻게 하나로 모을 수 없나 싶어서 정말 단순하게 웹사이트를 만들어서 vercel이라는 무료배포 서버에서 올려놓았다.

근데 api불러오는 부분이 너무 오래 걸린다.
const load = async () => {
const dustPromises = Object.entries(regions).map(async ([region, { code }]) => {
const data = await fetchDust(code)
return [region, data]
})
// 병렬로 예보 데이터 요청
const forecastPromises = Object.entries(regions).map(async ([region, { nx, ny }]) => {
const data = await fetchForecast(nx, ny)
return [region, data]
})
const dustEntries = await Promise.all(dustPromises)
const forecastEntries = await Promise.all(forecastPromises)
setDustData(Object.fromEntries(dustEntries))
setForecastData(Object.fromEntries(forecastEntries))
// 꽃가루 API는 하나니까 그냥 호출
await fetchPollen()
}
병렬 처리를 한다해서 하긴했는데 그냥 api 자체가 느리다.
가장 먼저 API를 던질떄 페이지를 지정할수있는데 일단 페이지수를 줄여보았다.
const params = new URLSearchParams({
serviceKey: encodeURIComponent(apiKey),
numOfRows: '20',
pageNo: '1',
dataType: 'JSON',
base_date,
base_time,
nx,
ny
})
하면 500 internal server error가 떠서 뭐지 싶다가 설마 해서 다시 1000으로 늘려봤는데 제대로 나와서 일단 이건 아니였다......
그냥 생각나는거는 캐싱을 해서 저장...하는 방식으로 하는 걸로 해보기로 했다.
근데 생각해보니 날씨를 한번 볼때 어처피 한번만 보는데 캐싱의 의미가 있냐라는 첫번째 생각이 들고 두번째로 기상청 api자체가 느리면 내가 뭘할 수 있는게 없지 않을까..? 라는 생각
일단 다시 코드를 돌려놓고 생각해보자.