python 으로 github api v3 접근하기 -- httplib
테스트 환경 : windows 7 32 bit, python 2.7.7
github api 참고 : https://developer.github.com/guides/getting-started/
httplib : https://docs.python.org/2/library/httplib.html#
** PyGithub 등과 같은 python wrapper library 를 이용하여 github api 접근하는게 편하지만,
github 는 기본적으로 API HTTP 를 이용한 접근법을 제공하므로 wrapper 모듈 사용하기전에
HTTP 접근법을 python으로 이용해 보자.
( 위 github api 개발자 사이트는 cURL 을 이용한다.)
1. Hello World

---> 위의 curl 명령어를 python으로 구현해보자.
1) 1차 접근법 ==> 실패
하지만, httplib 사이트에 나온 예제 처럼 접근하면 error!
* 에러 표시에서 보이듯이, github api 접근시에는 User-Agent header 가 필요하다.

2) 2차 수정 접근법 ==> 성공 !!!
-- User-Agent header 를 만들어 github api 에 접속하자!
import httplib
conn = httplib.HTTPSConnection("api.github.com")
conn.putrequest("GET", "/zen")
conn.putheader("User-Agent", "MyTest") # User-Agent 만들기, 내용은 상관없다.
conn.endheaders()
res = conn.getresponse()
print res.status, res.reason
print res.read()

* zen 출력 내용물은 계속 바뀐다...
2. 사용자 github profile 가져오기
위에 적은 github 개발자 사이트의 내용중 아래의 것을 python 으로 구현하자.

--> GET 방식, 접근할 사용자 주소는 /users/defunkt
import httplib
conn = httplib.HTTPSConnection("api.github.com")
conn.putrequest("GET", "/users/defunkt") # Get 방식, 접근할 사용자 주소
conn.putheader("User-Agent", "MyTest") # User-Agent 만들기, 내용은 상관없다.
conn.endheaders()
res = conn.getresponse()
print res.status, res.reason
print res.read()

--> 출력 결과 : json 포맷으로 나온다.
3. json 결과 뿐만 아니라 , 헤더 정보도 가져오기.

--> curl 에서는 -i 옵션을 사용하면, header 정보를 보여준다.
import httplib
conn = httplib.HTTPSConnection("api.github.com")
conn.putrequest("GET", "/users/defunkt") # Get 방식, 접근할 사용자 주소
conn.putheader("User-Agent", "MyTest") # User-Agent 만들기, 내용은 상관없다.
conn.endheaders()
res = conn.getresponse()
headers = res.getheaders() # header 정보 list
print res.status, res.reason
print ' ------------ header info -------------- '
for x in headers:
print x
print ' ---------------------------------------- '
print res.read()
< 결과 >
