2010년 7월 5일 월요일

간단한 나눔로또 Web API

근래에 로또와 관련된 글을 좀 자주 쓰는 듯 하군요. ;-)

앞서 Google App Engine 위에 만들었던 로또 정보 제공 사이트의 내용을 조금 수정해서 원하는 로또 정보를 제공 받을 수 있는 Web 용 API를 만들어보았습니다.

사용 방법은 간단합니다.

기본 URL

나눔로또 Web API 기본 URL은 아래와 같습니다.

http://lotto.kaisyu.com/api

파라미터

method = get | check

실행할 동작을 결정합니다. 아래 두 가지 중 하나를 선택할 수 있으며, 생략은 불가능합니다.

  • get: 로또 정보 반환
  • check: 로또 번호 당첨 여부 확인

gno = 0 ~ 최근 로또 회차 번호

로또 회차 번호입니다. 생략하거나 0 이하의 값이면 DB에 저장된 회차 번호 중 가장 최근의 번호가 사용됩니다.

type = json | python | emacs

반환되는 값의 형식을 지정합니다. 생략하면 json 형식이 기본으로 사용됩니다.

  • json: JSON 형식
  • python: Python dict 형식
  • emacs: Emacs lisp를 포함한 일반적인 Lisp object 형식

callback = (javascript_function_name)

method 파라미터의 값이 json일 때만 사용되며, 지정된 JavaScript 함수에 결과값을 인자로 주어 호출하는 코드를 반환합니다.

numlist = [[n,...],[n,...],...]

당첨 여부를 확인할 번호 목록입니다. method가 check로 지정되었을 때만 사용되며, 리스트의 리스트 형식입니다.

반환값

get

일반적으로 볼 수 있는 사전 형식을 사용합니다. (각 아이템의 순서는 일정하지 않음)

  • gno: 로또 회차 번호
  • gdate: 추첨일
  • nums: 당첨 번호 목록
  • bnum: 보너스 당첨 번호

예를 들어보면,

202회차, 2006년 10월 14일 추첨, 보너스 번호는 17, JSON 형식

{"bnum": 17, "gno": 202, "gdate": "2006-10-14", "nums": [12, 14, 27, 33, 39, 44]}

301회차, 2008년 9월 6일 추첨, 보너스 번호는 26, Python 형식

{'bnum': 26, 'gno': 301, 'gdate': '2008-09-06', 'nums': [7, 11, 13, 33, 37, 43]}

396회차, 2010년 7월 3일 추첨, 보너스 번호는 30, Emacs Lisp object 형식

((bnum . 30) (gno . 396) (gdate . "2010-07-03") (nums . (18 20 31 34 40 45)))

check

[당첨 등수, 일치 번호 목록] 형식의 리스트를 반환합니다. (리스트의 리스트) 이때, 당첨 등수값이 0이면 꽝!!을 의미합니다.

예를 들어보면,

1 게임을 확인했고, 5 등 당첨되었으며, 일치한 번호는 27, 33, 44, JSON 형식

[[5, [27, 33, 44]]]

2 게임을 확인했고, 하나는 꽝, 나머지 하나는 5 등 당첨, Python 자료 구조 형식

[(0, [12]), (4, [14, 27, 33, 44])]

3 게임을 확인했고, 하나는 꽝, 하나는 5 등 당첨, 나머지 하나는 대망의 1 등 당첨, Emacs Lisp object 형식

((0 (12)) (4 (14 27 33 44)) (1 (12 14 27 33 39 44)))

예제

JavaScript Callback 함수를 활용한 예제

JavaScript Callback 함수를 활용한 예제는 별도의 페이지에서 제공하므로 아래 링크를 따라가세요.

기타 URL 예제들

get

check