반응형

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()


< 결과 >












반응형
Posted by 자유프로그램
,