환율 정보 api 완성. 제작이야기 | Posted on 2017.01.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 추가 -

Posted by Pure Ani
, ,
이전 댓글 더보기
2017.04.05 16:41

비밀댓글입니다

Pure Ani 2017.04.06 10:33 신고

http://finance.yahoo.com/quote/KRW=X?p=KRW=X

YAHOO!에서 가져오고 있습니다.

2017.08.12 16:25

비밀댓글입니다

Pure Ani 2017.08.12 18:29 신고

나라명은 전체 리스트에서 확인하시고 저장하시는 방법밖에 없습니다.

전체 리스트의 베이스변경은 지원하고 있지 않습니다.

필요하시다면 환율 구하는 공식으로 계산을 하시면 됩니다.

2017.08.13 07:15

비밀댓글입니다

궁금해요 2017.12.14 10:50 신고

안녕하세요 운영자님
http://finance.yahoo.com/quote/KRW=X?p=KRW=X
여기 들어가보면 야후API가 중단된건지 페이지가 없다면서 404 에러 뜨는데요
지금 데이타는 어디서 가져오시나요?
운영자님 데이타는 현재 환율이 정확하게 나오는데 데이타소스가 어딘지 알수있을까요?
부탁드립니다.

Pure Ani 2018.01.09 23:16 신고

https://finance.yahoo.com/quote/KRW=X

잘 들어가집니다.

2017.12.19 13:45

비밀댓글입니다

Pure Ani 2018.01.09 22:47 신고

{API-URL}.js?callback={your-callback-function}

이렇게 콜해보세요.

지나가는손님 2018.01.08 18:26 신고

정보가 안나옵니다...

Pure Ani 2018.01.08 22:07 신고

제보 감사합니다.

API 전용 서버 자원이 부족해서 죽어 있었네요.

좀 더 좋은 사양의 클라우드로 이전해서 살려두었습니다.

iliosncelini 2018.01.11 11:24 신고

공부하는 학생인데, API를 어떻게 만드는지 잘 이해가 되지 않아서, 혹시 어떻게 만드시는지 참고할만한 사이트나 방법좀 가르쳐받을 수 있을까요?

Pure Ani 2018.01.13 18:57 신고

그냥 만들면 되지만, 제가 만든 방식과 비슷한것을 공부하고 싶으시다면, rest api 라고 검색해보시면 도움이 되실겁니다.

ZeroFlag_Kim 2018.01.13 12:05 신고

개발자님 궁금한점이 있어 질문 드립니다. 과거의 환율 데이터를 가저오는 방법은 있나요?
예를들면 현재 제작하신 API가 날짜와 시간도 파라미터로 지원하나요?

Pure Ani 2018.01.13 18:59 신고

현재로서는 없습니다만, 각기 은행들이 과거의 환율 데이터를 엑셀파일 형식으로 공개하고 있기 때문에, 필요하시다면 그것을 활용하시면 될거 같습니다.

과거의 데이터라고 해도 각기 원하는 데이터(은행에서 공개하는 데이터인지, 아니면 각기 시간별로의 최고 최저치인지 등등 바리에이션이 많기 때문에..)가 다르기 때문에 그것은 각기 직접 수집해서 사용하는것이 좋을거라 판단해서 추가는 하고 있지 않습니다.

ZeroFlag_Kim 2018.01.14 00:31 신고

그렇군요 답변 감사드립니다. 일단 이것을 사용하여 처리하였네요.
http://fixer.io 이곳에서 API를 받아 왔습니다.
개발자님의 API와 같이 사용할 것 같습니다. 감사드립니다.

zenki 2018.01.17 16:17 신고

안녕하세요~ 잘 참고 하고있어요
미국달러의 date가 고정적인거 같네요 못보신거 같아서 댓글 남깁니다 ㅎㅎ

Pure Ani 2018.01.17 21:54 신고

금액이 변동되면 갱신되도록 해놨었습니다.

현재 업데이트 시간도 DB와 다르면 업데이트 하도록 수정하였습니다.

제로 2018.01.18 18:47 신고

안녕하세요.
공개하신 API를 사용하고 싶은데
"Failed to load https://api.manana.kr/exchange/rate/KRW/JPY.json: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access."
라고 나옵니다.
header에 Access-Control-Allow-Origin를 설정 안하신것은 의도하신 것인지요?
위 설명 읽어보면 jsonp도 지원하는거 같아서 시도해봤는데 왠지 안되는듯...

Pure Ani 2018.01.18 21:25 신고

jsonp 타 도메인, 타 서버, 타 IP 에서 호출 잘 되고 있습니다.

제로 2018.01.19 09:54 신고

답변 고맙습니다.
제가 Endpoint를 잘못이해하고 있었습니다.
X: https://api.manana.kr/exchange/rate/KRW/JPY,KRW,USD.jsonp
O: https://api.manana.kr/exchange/rate/KRW/JPY,KRW,USD.js

진심 2018.04.02 20:28 신고

야후 환율 API가 멈춰서.. 어찌해야할바를 모르고 있었는데..
구글 검색해서 알게됐습니다.

잘사용하겠습니다.

진심으로.. 진심으로.. 진심으로 감사합니다!!

열렙천사 2018.04.26 16:57 신고

http://finance.yahoo.com/quote/KRW=X?p=KRW=X
환율 정보를 가져올때 위의 야후 사이트를 크롤링 해서 가져오시는건가요?
그렇다면 가져오고 싶은 환율 정보 한개당 url 요청 하나씩 해서 가져오는건지 궁금합니다.
만약 그렇다고 하면 그렇게 하는게 작업 속도가 느리진 않는지 궁금합니다.

Pure Ani 2018.05.06 16:08 신고

음?
유저의 요청 -> api 서버 -> 데이터 크롤링인지 질문이신건가요?

저런 구조로 되어있습니다만, 정확히는..
유저의 요청 -> api 서버 (유저가 요청할때 마다 실행)
api 서버 -> 데이터 api 서버 (1분마다 데이터 갱신)
로 구성되어 있습니다.

즉, 서버와 데이터를 받아오는 서버는 단독으로 움직이며, 유저의 요청이 들어오면 api 서버에서 답을 해줍니다.

11 2018.05.02 18:09 신고

잘쓰겠습니다. ^^

2018.06.12 18:27

비밀댓글입니다

Pure Ani 2018.06.17 16:16 신고

어떻게 구현되어있는지 모르기 때문에 확답은 불가능하지만, 가능할 수 있습니다.

voidsatisfaction 2018.06.17 15:59 신고

너무나도 잘 쓰고있습니다. 감사합니다 ~

koo 2018.06.28 10:12 신고

질문이 있는데요.
https://finance.yahoo.com/quote/KRW=X?p=KRW=X
를 호출하면 api가 아닌 사이트가 나오고 있는데 데이터를 어떻게 가공하시는건가요??
저야 제공해주신 api를 활용하면 되긴하지만 혹시라도 Ani님께서 api 제공을 중지하게 된다면 어떻게 환율정보를 가져올까 해서요

2018.08.07 12:49

비밀댓글입니다

Pure Ani 2018.08.07 21:06 신고

네. 현재로서는 가능합니다.

그보다 이미 많이 있어서,,;;

단지, 서버 비용이 힘들어지면 중단 될 수 있으니 이 점 양해바랍니다.

2018.08.15 14:54

비밀댓글입니다

Pure Ani 2018.08.19 18:49 신고

오, iOS 용 환율 계산기 앱을 만드셨군요.

앱스토어 등록 축하드립니다.

ラズベリーキューブ まどそふと

白恋サクラ*グラム NanaWind

かりぐらし恋愛 ASa Project

IxSHE Tell HOOKSOFT

調子に乗ってるレイヤーでオタサーの姫を教師の俺が騙してハメ撮りしてみた ぱちぱちそふと黒

幕末 尽忠報国烈士伝 MIBURO インレ

Making*Lovers SMEE

ノラと皇女と野良猫ハート2 -Nora, Princess, and Crying Cat.- HARUKAZE

『ノラと皇女と野良猫ハート2』応援中♪

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

姫繰三六五 公式ウェブサイト

はるるみなもに! クロシェット

枯れない世界と終わる花 SWEET&TEA

ハナヒメ*アブソリュート! mirai

死に逝く君、館に芽吹く憎悪 バグシステム

恋するきもちのかさねかた〜かさねた想いをずっと〜 ensemble

Sanguinea-サングイネア- すにぃる

彼女のセイイキ feng

麗華の館 しすたーそふと

カスタムメイドオンライン KISS