티스토리 뷰
코로나 바이러스 실시간 확진자 현황을 수시로 보는 버릇이 생겼다.
- 코로나 현황 사이트: https://corona-live.com/
하루에도 여러 차례 챙겨보다보니 가장 많이 보는 것들중 하나가 지난 주 같은 요일과의 확진자 수 차이였다. 하루 전날과의 차이는 크게 의미를 찾기 힘들고, 월별 비교는 또한 지나치게 큰 시차가 있기에 현 시점에서 지난 1주차, 2주차, 3주차를 비교한 자료가 아쉬웠다. 그래서 만들어 보기로 함
프로세스는 크게 네 단계로 만들어보았다.
1) 공공데이터 오픈API를 신청해서 데이터 얻기 https://jusths.tistory.com/199
2) 데이터를 먹기좋게 요리하기 https://jusths.tistory.com/200
3) 데이터를 차트로 만들어서 웹서비스 하기 https://jusths.tistory.com/201
4) Heroku 에 올려서 서비스하기 https://jusths.tistory.com/202
GitHub: https://github.com/nicewook/corona-visual-server
Heroku app: https://corona-weeks.herokuapp.com/
공공데이터 오픈API를 신청해서 데이터 얻기
방법은 쉬운데 시스템이 어딘가 깔끔하지 못해서 며칠이 걸렸다. 요약하자면
1) 원하는 API의 신청과 승인은 금방되는데, 실제로 KEY가 등록되지 않아서 API를 사용할 수 없었다.
- 에러는 SERVICE KEY IS NOT REGISTERED ERROR.
- 보통은 1시간이면 된다고 하는데 하루가 지나도 되지 않았다.
2) Key의 encode, decode에 대한 말들이 많았는데 이 문제는 아니었다.
- Base64 인코딩을 하면 맨 뒤에 = 이 0개에서 2개가 붙게 되는데, URL Encoding을 해주는 여부와 관련된 이슈
- 즉 = 의 경우는 URL 상에서는 %3D가 되어야 한다. 이건 사이트에서 제공하는 값을 그대로 사용하면 된다.
3) 결국 문의 넣고 (응답은 없었지만) 며칠 지나서 해보니 되었다.
- Service Key를 발급은 해주었는데, 실제로 등록이 안되는 것 같았다.
승인 받는 프로세스
https://www.data.go.kr/ 로 가서 코로나로 검색을 하였다.
보건복지부_코로나19 감염_현황 이라는 항목이 찾는 녀석으로 보인다.
로그인하고 활용신청을 하면 얼마 지나지 않아 승인이 떨어진다.
하지만 실제 service key 등록은 1시간 정도 소요된다고 하며, 나의 경우는 왜인지 모르겠지만 문의까지 접수하고도 3일 이상이 걸렸다.
상세 서비스 정보를 보자. 실제로 URL 전체를 생성해서 동작여부를 확인할 수도 있다.
1) 일반 인증키: 이 키가 내가 사용할 수 있는 service key 이다. 이미 Base64 인코딩 → URL 인코딩이 된 상태이다. (맨 끝에 %3D가 보인다.)
2) 미리보기 확인을 누르면 실제 URL을 생성하여 브라우저에서 request를 보낼 수 있다. ServiceKey 부분에 발급받은 service key를 복붙하여 미리보기를 클릭하면 새로이 브라우저 탭이 열리며 request가 날아간다.
아래는 미리보기로 생성된, 쿼리를 포함한 전체 URL이다. (service key는 보안상 일부를 수정하였다.)
실제로 프로그래밍을 한다면 request 를 보내는 URL이 이렇게 되어야 하는 것이다.
http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson?serviceKey=4KK7iG3WFFofHH0E0lbgI0cr0rsXMsdsdaaabbbeeedddEzi8ZMJYGBCg%3D%3D&pageNo=1&numOfRows=10&startCreateDt=20200310&endCreateDt=20200315 |
미리보기로 request를 보낸 결과가 아래와 같이 나온다.
1) URL이 어떤 모양인지 확인 가능
2) 이 경우는 제대로 회신이 온 것이고, 위에 언급한대로 service key가 등록이 안되었다면 에러가 발생할 수 있다.
'golang' 카테고리의 다른 글
코로나 바이러스 확진자 동향 3주간 비교 - 차트 만들기 (0) | 2021.03.03 |
---|---|
코로나 바이러스 확진자 동향 3주간 비교 - 데이터를 먹기좋게 요리하기 (0) | 2021.03.03 |
exec.Command() 간단 활용 (0) | 2021.02.18 |
Go 슬라이스 가지고 놀아보자 (0) | 2020.10.21 |
Go: 필드가 많은 구조체의 marshaling/unmarshaling (0) | 2020.09.19 |
- Total
- Today
- Yesterday
- 독서후기
- golang
- Shortcut
- go
- 오블완
- ChatGPT
- 인텔리제이
- 체호프
- Bug
- 티스토리챌린지
- 잡학툰
- solid
- 제이펍
- websocket
- 독서
- bun
- 클린 애자일
- strange
- OpenAI
- agile
- 노션
- github
- intellij
- notion
- folklore
- Gin
- API
- 영화
- 2023
- clean agile
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |