추천 게시물

[JavaScript] 양력 날짜를 음력 변환 후 60갑자 띠 확인하기

목차

양음력 변환 구현 어려움

이번에 블로그에 양력 날짜를 음력으로 변환하는 코드가 필요하여 java script로 만들었다. 워드프레스라면 다양한 플러그 인을 활용하거나 서버에 패키지를 설치해서 손쉽게 변환할 수 있겠지만 java script는 그러한 알고리즘을 적용하기 어렵다. 

양력, 음력 변환에 규칙성이 있을 것이라 생각했지만 알고리즘으로 쉽게 구현되지 않는 규칙이었다. 아마 윤달, 윤년이 있어서 계산이 쉽지 않은 듯 하다. 나중에 정말 코딩 실력이 커지면 한번 코드로 만들어 볼까 생각 중이다.

결국 알고리즘을 직접 구동하는 방식은 java script로 구현하기 매우 어렵다는 결론을 내렸다. 구글에서 수많은 질문과 대답을 확인했으나 양음력 변환은 어려우니 PHP를 설치해서 사용하거나 관련 패키지를 이용하는 것이 가장 좋다는 것이었다.

API를 이용하기

직접 만들기 어렵다면 무료로 제공하는 OPEN API를 활용하는 방안을 적용할 수 있다. 우리나라는 IT 강국이므로 역시 국가에서 해당 기능을 제공해 주었다. 그 곳은 바로 공공 데이터 포털이다.

API를 이용하는 방법을 요약하면 다음과 같다.

  1. 공공 데이터 포털 가입 후 휴대폰 인증
  2. 한국천문연구원_음양력 정보 활용 신청하기
  3. 마이페이지에서 인증키 확인
  4. OPEN API 참고 문서를 바탕으로 java script 알고리즘 구현

위의 내용을 따라하기 어려운 분들을 위해 각 항목에 대해 순서에 따라 조금 더 자세히 정리해 보았다.

1. 공공 데이터 포털 가입 후 휴대폰 인증

본인은 손쉽게 카카오 계정으로 가입하였다. 동의 하는 항목은 선택 없이 전부 필수 이므로 급한 사람은 전부 동의하면 된다.

만약 로그인을 했는데 휴대폰 인증을 하라는 팝업이 나타나면 휴대폰 인증을 진행한다. 또는 마이페이지에서 진행할 수 있다. 휴대폰 인증은 2년 마다 만료되므로 주기적으로 갱신이 필요하다. 

2. 한국 천문 연구원 음양력 정보 활용 신청하기

공공 데이터 포털의 첫 페이지에 친절하게 검색 창이 있다. "음양력"이라고 검색한 뒤 스크롤을 내리면 다음과 같은 결과를 찾을 수 있다. PC에서는 바로 활용 신청 버튼을 찾을 수 있다.


[오픈 API] - [음양력 정보] - [활용 신청]을 선택하여 신청서를 작성한다. 

이 때 처음 신청하는 것은 개발 계정 신청이다.

신청서만 작성하면 즉시 자동 승인이 되므로 승인을 기다릴 필요는 없다. 

  • 2년간 API를 사용 가능 (기간  언제든 연장 신청 가능)
  • 개발 후 운영을 위해 운영계정 신청 필요
  • 개발 계정 일일 1만 건 트래픽 가능
  • 운영 계정 일일 100만 건 트래픽 가능

3. 마이페이지 에서 API 인증키 확인하기

PC의 경우 우측 상단, 모바일은 세줄 메뉴에서 마이페이지를 찾을 수 있다. 그 뒤 아래와 같이 개인 API 인증키를 찾을 수 있는데, 키는 Encoding과 Decoding 두 개이다. 

API의 활용에 따라 둘 중 어느 하나를 사용해야 한다. 음양력 변환은 Encoding 인증키를 사용하여 확인할 수 있었다.

데이터 포털 안내 문구

API 환경 또는 API 호출 조건에 따라 인증키가 적용되는 방식이 다를 수 있습니다.

포털에서 제공되는 Encoding/Decoding 된 인증키를 적용하면서 구동되는 키를 사용하시기 바랍니다.

* 향후 포털에서 더 명확한 정보를 제공하기 위해 노력하겠습니다.


4. OPEN API 활용 예제

REST API 활용 예제

DOCX로 된 참고 문서에 친절하게 API 사용 방법과 item, parameter, 예제들이 정리되어 있다. 

http://apis.data.go.kr/B090041/openapi/service/LrsrCldInfoService/getLunCalInfo?solYear=2015&solMonth=01&solDay=01&ServiceKey=서비스키

Javascript 활용 예제

또한 앞서 개발용 활용 신청을 했던 음양력_정보 페이지를 PC버전으로 접속하는 경우 하단에 java, javascript, C#, PHP 등 예제 코드들을 확인할 수 있다.


/* Javascript 샘플 코드 */
var xhr = new XMLHttpRequest();
var url = 'http://apis.data.go.kr/B090041/openapi/service/LrsrCldInfoService/getLunCalInfo'; /*URL*/
var queryParams = '?' + encodeURIComponent('serviceKey') + '='+'서비스키'; /*Service Key*/
queryParams += '&' + encodeURIComponent('solYear') + '=' + encodeURIComponent('2015'); /**/
queryParams += '&' + encodeURIComponent('solMonth') + '=' + encodeURIComponent('09'); /**/
queryParams += '&' + encodeURIComponent('solDay') + '=' + encodeURIComponent('22'); /**/
xhr.open('GET', url + queryParams);
xhr.onreadystatechange = function () {
    if (this.readyState == 4) {
        alert('Status: '+this.status+'nHeaders: '+JSON.stringify(this.getAllResponseHeaders())+'nBody: '+this.responseText);
    }
};

xhr.send('');

댓글