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()
< 결과 >
'python' 카테고리의 다른 글
python -- self, 클래스멤버(변수) , 인스턴스멤버(변수), 생성자, 소멸자 (0) | 2014.08.27 |
---|---|
python anagram --- timeit 실행시간 확인 (0) | 2014.08.24 |
base64 encoding , decoding (0) | 2014.08.21 |
PyGithub 으로 github 주무르기 (0) | 2014.08.21 |
python ; == , is 차이점 , id, integer caching, string interning (0) | 2014.08.05 |