음..


몇일전에 이야기했었던..

(토렌트 파일(마그넷주소)를 사용해서 seeders와 peers 그리고 downloads 정보를 가져오는것을 만들어 봤는데..)


공공데이터포털특일정보 api를 사용해서 한번 만들어봤습니다.


일단 api의 주소는..


http://api.manana.kr/calendar.json


입니다.


이거 만들어 본답시고 서브도메인 하나 판..

(api가 더 늘어날지는 모르겠지만..)


일단 api는 Restler를 사용해서 만들었습니다.


2버전만 존재할때부터 사용하던 api 툴이라;;

(오랜만에 새로운 버전 쓰려고 검색해보니, 툴이 많이 확장됬던.. 왠만한곳에 다 쓰이네..)


지금까지 만든 api는 다 저거 쓴..

(이번에는 2버전이 아니라, 3버전으로 올려서 새로운 시도를 하느라 삽질을 했지만..)


공휴일 정보 api 사용법은 이렇습니다.


http://api.manana.kr/calendar/{4자리 년도}/{2자리 월}/{2자리 일}/{all / holiday / divisions / sundry}/{kr / jp}.json


PHP 함수처럼 필요없는 뒷 부분은 생략이 가능합니다.


년도와 월은 필수 입력이며, 일은 00이 기본값입니다.


그 뒤의 데이터는 앞의 단어가 기본값입니다.

(즉, all과 kr.)


현재 한국 정보는 holiday (국경일), divisions (24절기), sundry (기타)로 구성이 되어있습니다.


일본정보는 국경일만 적용이 되어있는 상태.


일본 api는 이곳( http://calendar-service.net/api.php )을 참고했습니다.


지원하는 메소드는 GET과 POST 뿐입니다.

(이거 외에는 api를 불러올때 사용할거 같지는 않아서..)


그리고 현재 지원하는 포맷은 json과 xml 입니다.

(마지막의 .json을 .xml로 바꾸시면 xml 데이터로 보입니다.)


일단은 데이터를 제공하는 양쪽의 문구를 볼때 문제는 없어보입니다만, 추후 문제가 발생할 경우 수정이 되거나, 삭제될 수 있습니다.


ps. 현재 api가 파일 캐시를 쓰면서 한시간 간격으로 갱신이 되고 있습니다.

(DB 과부하를 최소화 하기 위해서.. 하루로 하려다가 한시간으로 한..)


PHP 파일 캐시는 간단하게 쓸 수 있는게 없는거 같아서..

직접 만들어서 사용을 했는데..

(내가 캐시 시스템도 만들어서 쓸줄이야.. 왜 간단한 캐시가 없어요.. 징징.. 난 이상한 여러가지 기능있는거 말고 그냥 파일 쓰고, 읽고, 삭제하는거만 있으면 된다구요..)


필요하신분들은 쓰시기 바랍니다.

https://github.com/yks118/php-file-cache

(cache.php 파일을 한번 보시면 크게 어려움이 없이 사용 할 수 있다는걸 아실겁니다. 정상적인 작동이 안된다면 아마도 폴더의 퍼미션이 안맞을수 있습니다. 그리고 호스팅 상위에 /cache 폴더를 생성하도록 설정되어있으니, 필요에 맞게 수정하시기 바랍니다.)


ps2. 특일정보 api를 PHP로 사용할 수 있게 만들었던 클래스도 공개해뒀습니다.

https://github.com/yks118/PHP-Korea-Calendar-API


현재 위에서 소개한 api도 위의 파일을 사용하고 있습니다.

아마 추가되어야하는 매년있는 행사나 그런게 요청이 들어오면 수정을 할지도..???


ps3. 사용하시다보면 데이터가 안맞거나 하실 수 있을 수 있습니다.

그런경우에는 아래의 주소를 양식에 맞게 접속해주시면 됩니다.

http://api.manana.kr/calendar/update/{4자리 년도}/{2자리 월}/{kr / jp}.json


그러면 해당 년도와 월의 국가 공휴일 데이터를 삭제하고 다시 받아서 api를 만들게 됩니다.

공공데이터포털의 특일정보를 기반으로하고 있기 때문에, 그쪽에서 수정이 되지 않으면, 제 api의 업데이트 요청을 해도 수정안된 상태로 보이게 됩니다.


ps4. 소소한 기능들..

http://api.manana.kr/calendar/2017/01/00/all/kr,jp.json

http://api.manana.kr/calendar/2017/01/00/all/jp,kr.json


위 두가지를 접속해보시면 아시겠지만, 위의 경우는 한국 공휴일이 위로 오고, 아래의 경우는 일본 공휴일이 위에 오게 됩니다.

그리고 두 국가의 정보를 동시에 불러오죠.


기본적으로 holiday / divisions / sundry 순서대로 정렬이 됩니다만, 이것도 위와 같은 방법으로 정렬을 바꿀 수 있습니다.

holiday만 가져올수도 holiday 와 divisions의 정보만 가져올수도 있습니다.


http://api.manana.kr/calendar/2017/01/00/divisions,holiday.json

위의 주소는 샘플입니다.

24절기가 가장 위에 오며, 그 다음에 국경일이 오게 됩니다.


ps5. 과거에는 저런걸 그냥 api라고만 불렀던거 같은데..

지금은 REST API라고 하나보네요..?

(옛날에도 그렇게 불렀었던가..? 나는 그렇게 안불렀었어서;;)


하긴 뭐 요즘은 결제시스템도 api라고 말하면서 퉁치는 세상이니..

과거에는 한정된 포맷으로 입력에따라 데이터를 가공해서 보내주는걸 api라 했었던거 같은데..

요즘은 그 api의 의미도 많이 확장이 됬으니..


그냥 데이터를 주고 받으면 다 api라고 부르더라..

심지어 MVC패턴도 api라 하는 사람들 많이 있는거 같기도..

Posted by Pure Ani

RE:D Cherish! -Eternity Blood- CRYSTALiA

放課後シンデレラ2 HOOKSOFT

花鐘カナデ*グラム NanaWind

フタマタ恋愛 ASa Project

スタディ§ステディ2 ま~まれぇど

リンパにATATA! ~メス牡蠣ミルクどぴゅらっしゅ~ Hending

創作彼女の恋愛公式 Aino+Links

流星ワールドアクター Heliodor

Secret Agent~騎士学園の忍びなるもの~ ensemble

天冥のコンキスタ エウシュリー

HaremKingdom -ハーレムキングダム- SMEE

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

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

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

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

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

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

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

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

麗華の館 しすたーそふと

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