Python http requests module

도구의인간 메이커스 위키
이동: 둘러보기, 검색

HTTP request in Python : requests module

python의 requests 모듈을 사용해 REST 프로토콜을 쉽게 다룰 수 있다. 너무 널리사용되는, 사실상의 파이선 내장모듈이라고 볼 수 있다. 참고: https://realpython.com/api-integration-in-python/ 공식문서: https://2.python-requests.org/en/master/

설치

$ pip install requests
  • 아마도 대부분의 경우 기본으로 설치되어있음

기본 사용법

basic get

get(), post(), put() 메소드를 가지고 있고 서버의 응답이 이들 메소드의 리턴이 된다. 심플하다.

import requests

URL = ''https://todolist.example.com/tasks/''
resp = requests.get(URL)
if resp.status_code == 200: # OK
  for item in resp.json():
    print(item)
else :  # something wrong
  raise ApiError(resp.status_code)
  • resp.json()의 리턴은 파이썬 오브젝트다 일반 딕셔너리나 리스트처럼 간편하게 다룰 수 있다.
  • raw data를 그대로 보려면 'resp.text' 프로퍼티를 사용하면 된다.

parameter 전달

get() 메소드에 'params=' 아규먼트를 추가해 보낸다

params = {'key':'value'}
res = requests.get('http://www.tistoty.com', params=params)
print(res.url)
# http:./www.tistody.com/?key=value

header 전달

get(), post() 메소드에 'headers=' 아규먼트를 추가해 보낸다.

data 전달

post() 메소드에 'data=' 아규먼트를 추가해 보낸다.

body = {"key1": "value1", "key2": "value2" }
resp = requests.post(URL,
                     data=json.dumps(body),
                     headers={'Content-Type':'application/json'},
                     )

혹은 'data=' 대신에 'json='아규먼트를 사용하면 requests가 알아서 딕셔너리를 json으로 바꾸어준다. 아래 예는 위 코드와 동일하다.

resp = requests.post(URL,json=body)