환율 정보 api 완성. 제작이야기 | Posted on 2017. 1. 30. 16:07
음..
환율정보 api는 아직 없는듯하여, 만들어 봤습니다.
(아니 있긴 하더라.. 스킨형..)
특일정보 api와 같은 시스템입니다.
제공하는 포맷은 json과 xml이고..
(주소 마지막의 json을 xml으로 변경..)
캐쉬는 1시간으로 설정되어있고..
(5분마다 업데이트를하는데, 업데이트된 정보가 있으면 캐쉬가 갱신됩니다.)
http://api.manana.kr/exchange/rate.json
환율정보는 위의 정보가 기본 베이스입니다.
http://api.manana.kr/exchange/rate/{베이스 코드}/{환율 정보 가져올 코드들..}.json
로 설정하시면 가져올 정보를 변경 가능하십니다.
기본적으로는 베이스코드는 KRW, 환율 가져올 코드로는 KRW,USD,JPY 가 설정되어있습니다.
특일정보와 동일하게 환율 가져올 코드의 순서를 변경함으로서 순서를 바꿀 수 있습니다.
(ex. http://api.manana.kr/exchange/rate/KRW/JPY,KRW,USD.json)
api에서 제공하는 데이터의 확인은 아래의 주소에서 가능합니다.
http://api.manana.kr/exchange.json
현재일로부터 한달사이에 갱신이 있는 정보를 보여주며, 가장 최근에 갱신된 데이터를 상단에 보여주게 됩니다.
해당 api도 문제가 발생할시 삭제될 수 있습니다.
ps. 코드를 모른다, 혹은 코드를 못찾겠다 싶으시면..
https://ko.wikipedia.org/wiki/ISO_4217
위의 주소에서 코드항목을 참고해주세요.
ps2. 환율 정보를 보다보면, 아래와 같이 100이라고 써져있는 환율이 있었을겁니다.
그런경우는 리턴된 값에서 100을 곱해주시면 됩니다.
위의 이미지를 예시로 하자면..
10.248693271745에서 100을 곱하면, 1024.8693271745이니까..
우리가 흔히 아는 엔화 환율이 1024.86이 됩니다.
(소수점3자리에서 올림하면 1024.87)
ps3. 전번 업데이트와 비교해서 등락율등은 직접 구현하시면 되겠습니다.
그런거 고려안하고, 그냥 데이터만 가져와서, 환율 구하는걸로만 만들어서, 그거 구현하려면 좀 복잡해지는..
게다가 대부분의 경우, 딱히 필요도 없고..
api 기획, 디자인, 개발 경력 약 3년차로 말하자면..
api는 가장 기본적인 기초적인것만 충실히 제공하면 되는..
그 데이터로 커스텀이야 사용자가 직접 하는게 편리하고..
(api의 구조가 복잡해지면 유지보수 짜증나고, 커스텀해서 제공한다 해도, 내가 필요로 하는건 매번 없어서 다시 만들었던 기억들이..)
ps4. 인터넷에 간간히 저격글등이 보이는데, 18년 01월 09일 기준으로 지원하는 포맷은 html (메뉴얼용), json, xml, jsonp (javascript - 크로스 도메인용) 뿐입니다.
(추후 지원 포맷은 사이트 메뉴얼에 갱신될테니, 그곳에서 확인 바랍니다.)
필자는 분명히 지원 포맷 적어놨고, 이건 유료 API가 아니라 무료 API 입니다.
이것의 의미를 잘 생각해주시면 좋겠습니다.
(애초에 필자가 돈받아가면서 이걸 사업화해서 잠자는 시간 빼고 이 API에 달라붇어있는거면 모를까 후원계좌 열어놔도 1원도 안들어오는 API 때문에 제가 욕먹을 필요는 없을거 같군요?)
애초에 제작의도 자체가 필자가 개인적으로 쓸려고 만든 API 들입니다.
(처음부터 공개할 마음은 없었던 물건입니다.)
그리고 필자의 필요에 의해서 계속 추가 수정 삭제 하고 있구요.
그냥 선의에서 공개한건데, 자꾸 인터넷에서 개노답같은 글들이 보이면 그냥 개인용도로 OAuth2 걸어서 혼자서 쓸수도 있습니다.
그리고 api 를 for 문 돌리는건 좀 양해바랍니다.
(한번 콜해서 환율 공식으로 환율 계산 좀 합시다. 워차피 API 서버 내부 로직도 그렇게 돌아갑니다.)
계속해서 이야기하는건데, 자꾸 api 를 for 문 돌려서 1초에 수십, 수백번 콜하는 분들이 계시네요.
자꾸 그렇게 단독으로 서버에 과부하주시면 기타 다른 API 들 처럼 Limit 를 거는 방법밖에 없습니다.
(현재 Limit 구현은 다 되어있고, 주석만 걸어뒀습니다. 추후 확정이 되면 정책이 달라질 수 있겠지만, 현재는 1분에 60콜, 1초에 1콜정도로 제한을 걸까 생각중에 있습니다. 접근 로그가 하루에 수십기가씩 쌓이는 매직은 그만 보고 싶군요. 애초에 환율 API 1분에 한번 갱신합니다 ㅡ,.ㅡ..)
회사에서 퇴근하고, 간만에 API 쪽 건드릴 시간이 생겨서 뭐 좀 검색해보다가 재미있는 의견들이 있는 글을 봐서 주저리 적어봅니다.
(급한 사안이라고 생각되는 코멘트 이외에는 바로 답변이 안달릴 수 있습니다. 개인적인 본업도 있고, 현재 준비중인 사업도 있고, 현재 진행중인 외주 개발도 있고, 현재 이렇게 선의로 시스템 구축해서 공개한거 유지보수도 진행중이고.. 저도 상당히 바쁜고로, 거의 모든 시스템을 최대한 자동화해서 돌리는거라.. API 중에서는 현재 노래방정도만 한달에 한번 수기 입력으로 갱신중.. 애초에 필자한테 외주 던지는 회사 대표도 매일같이 핫라인 달라고 하는데, 블로그 코멘트를 매일 실시간으로 확인을 할리가..)
위의 모든것을 다 용인하실 수 있으신분만 사용해주시면 감사합니다.
의견을 코멘트로 주시면 확인하여, 가능한지 여부를 답변달아 드리지만.
(실제로 트위터 API 를 활용해서 만든 시스템도 그렇게 하고 있고.. 단, 바로 답변은 안달립니다.)
서버에 과부하를 걸거나, 욕하시는 분들이 많으면 저도 딱히, 이 서비스를 유지하고 싶은 마음이 안드네요.
(간간히 API 가 뻗는 경우가 있습니다. 이 경우는 서버 reboot 도 있지만, 과부하로 인해 서버가 뻗은 경우도 있습니다. 실제로 최근에 서버가 더이상 버티질 못해서 상위 플랜으로 올렸습니다. reboot은 1분 이내로 정상화 되지만, 과부하로 뻗는경우 복귀에 최소 1일, 최대 1달이 걸릴 수 있습니다. 복구가 답없으면 서비스 종료.)
- 18.01.09 추가 -
ps5. 18년 08월 02일 오후 2시부터 갱신이 안되던 문제를 18년 08월 10일 오전 1시에 해결했습니다.
야후의 API가 개편되면서, 기존에 사용하던 API가 삭제됬었네요;;
18.08.09일 오후 4시 25분경에 오류를 카톡으로 제보해주신분때문에 파악했네요.
제보 감사합니다.
환율정보는 기존과 동일하게 야후에서 가져오게 됩니다.
(기존에 쓰던 야후 API가 뻗었으면, 새로운 야후 API를 구하면 되지,,)
- 18.08.10 추가 -