커뮤니티토픽게시판

기존 개인적으로 사용하던 날씨 위젯을(https://xetown.com/board/863761) 공개된 api로 날씨 위젯을 만들어 보려고 하고 있습니다.

 

사용할만한 api가 있나 구글링을 많이 해 봤고... 아래의 정보를 이용해서 위젯을 만들 예정입니다.

미세먼지 현황: http://aqicn.org/api/kr/

날씨 현황: http://www.weather.go.kr/weather/forecast/timeseries.jsp

 

처음에는 @웹지기님의 문의 글에서 알게된 기상청의 api를 사용하려 했는데 이게 날씨 현황이 아니라 예보만 제공하더군요.

https://xetown.com/index.php?mid=qna&category=671910&document_srl=833011

 

그래서 날씨 api를 찾기위해 꽤 많은 시간을 검색에 투자했는데...

기상청 홈페이지 하단에 '공공저작물 자유이용허락 표시 기준(공공누리, KOGL) 제1유형'이 붙어있는걸 발견 했습니다.

이것은 출처만 표시하면 "상업적, 비상업적 이용가능", "변형 등 2차적 저작물 작성 가능"의 이용 허락이라는것을 알게되어 시간별 동네예보 자료를 이용해서 현재 날씨를 표시할 예정 입니다. 

http://www.mcst.go.kr/web/s_notice/press/pressView.jsp?pSeq=14884

 

혹시 위의 자료보다 괜찮은 api 있다면 의견 주시면 감사하겠습니다.

  • profile

    어.. 미세먼지는 우리나라 정부에서 제공하는 api가 아니군요.우리나라 것은 자료가 안좋은가요?

    https://www.data.go.kr/dataset/15000581/openapi.do

  • profile profile
    이곳도 우리나라 자료는 같은곳(http://www.airkorea.or.kr/) 에서 자료 제공 받는거 같더라구요. 다만 초미세먼지(pm2.5)부문의 자료는 http://aqicn.org 쪽이 좀더 강(?)한 느낌은 있습니다.
  • profile
    기상청이면... 국내예보만 가능한거죠?
  • profile profile
    네, 국외까지 처리하려면 https://openweathermap.org/api 이정도가 괜찮아보이는데... 무료는 분당 60회의 요청까지만 처리가 가능한 제한이 있습니다.
  • profile
    요건 우리동네 예보 api 네요.
    https://www.data.go.kr/dataset/15000099/openapi.do
  • profile profile
    네, 공공데이터포털은 회원가입과 운영계정 키를 받으려면 심의하는것도 있어서 우선 제외 시켰습니다.
  • profile profile
    보통 api가 가입하고 키를 받아야 하는건 이상한게 아닌데요. 굳이 제외하실 필요가...
    가입없이 똑같은 자료를 가져올 수 있다면 말씀하신 방법이 좋겠죠. 
  • profile

    동네예보 api에 현재 실황도 나오지 않나요?

    문제는 api를 호출하는 방식인데요... 서버단에서 정보를 받아다가 뿌려주면 느려지기 쉽고, 브라우저에서 직접 접속하도록 하면 api 키가 노출되거나 과도한 요청으로 차단될 가능성이 있습니다. 지난 연말에 인기를 끌었던 눈 내리는 애드온도 이것 때문에 느려지곤 했었지요. 적절한 캐싱을 활용하여 균형을 잡아 주세요^^

  • profile profile
    넵, 개인 적으로 사용하던 위젯도 서버단에서 요청을 하고 동네별로 부여된 코드로 캐시관리를 합니다. 어차피 날씨공표는 대부분 1시간 단위로 하는거 같으니 캐시를 적절히 사용해야 할꺼 같습니다 @[email protected]
  • profile profile

    동네를 지나치게 세분화하지 않고 시·군·구 단위로 적당히 뭉뚱그려서 처리하면 캐시 효율이 높아질 것 같습니다. 서초동과 역삼동, 종로와 을지로, 분당과 수지의 날씨가 눈에 띄게 다를 가능성은 낮고, 만약 다르더라도 1시간이라는 오차범위 이내의 차이일 테니까요.

    눈 내리는 애드온은 api 통신이 원활하지 않을 경우 (공공데이터포털 쪽의 장애라기보다는 호스팅 서버 쪽의 네트워크 문제가 대부분입니다) 캐시 처리가 되지 않아서 계속해서 요청하는 문제가 있었던 것으로 기억합니다. 장애가 발생하더라도 캐시된 데이터를 일정 기간 더 활용할 수 있다면 더 좋겠네요.

  • profile profile
    미세먼지 때문에 동네지역을 구분해야 하는 문제가 있습니다.

    그리고 눈송이애드온 때문에 1시간마다 느렸다고 했던 건은 제 판단은 api와 통신이 지나치게 느렸던 서버라고 판단하고 있습니다. 해당 애드온이 1시간마다 좌표값 api 를 이용해 받아와 날씨정보를 파싱해 오면 쿠키에 저장을 합니다.

    말씀대로 계속 요청했던 문제라면 1시간 마다 규칙적으로 느리다는 것이 아닌 지속적으로 계속 요청해서 계속 느렸어야 한다고 보고 있습니다.

    말씀 하신 계속 이라는 것이 특정 타임아웃을 주지 않아 너무 오랜동안 통신해서 값을 가져오는 것을 차단하지 않았다라고 하면 조금 다른 이야기를 제가 하는 것 같구요.

    특정서버의 문제라 봐야 할 부분이 아닌지 조심스럽게 이야기 하고 싶네요.
  • profile profile
    네, 특정서버의 문제인 것은 맞습니다만.... 국내 웹·서버·클라우드 호스팅 환경에서는 그런 문제가 있는 특정서버가 너무 많습니다 ㅜㅜ