All about

Requests 는 파이썬에서 HTTP를 사용하기 위해 쓰여지는 라이브러리로, 기본 내장 라이브러리는 아니지만 거의 표준처럼 널리 쓰이고 있다. 개발 과정에서 많이 쓸법한 내용들만 뽑아서 정리했다. 이 글에 정리되지 않은 headers, cookies 등 작성하지 않은 내용은 링크를 참조바람.
https://docs.python-requests.org/en/master/user/quickstart/

 

Quickstart — Requests 2.25.1 documentation

Eager to get started? This page gives a good introduction in how to get started with Requests. Let’s get started with some simple examples. Passing Parameters In URLs You often want to send some sort of data in the URL’s query string. If you were const

docs.python-requests.org

 

API


어떤 방식(method)의 HTTP 요청을 하느냐에 따라서 해당하는 이름의 함수를 사용하면 된다.

GET 방식: requests.get()
POST 방식: requests.post()
PUT 방식: requests.put()
DELETE 방식: requests.delete()

 

Response status


온라인 서비스를 HTTP로 호출하면 상태를 응답받게 된다. 일반적으로 이 상태를 보고 요청이 잘 처리되었는지, 문제가 있는지 알 수가 있다. 상태 코드는 Response 객체의 status_code 속성을 통해 간단하게 얻을 수 있다.

>>> import requests
>>> response = requests.get("https://google.com")
>>> response.status_code
200
>>> response = requests.get("https://google.com/user/")
>>> response.status_code
404

 

HTTP status code는 아래 위키피디아 링크에서 확인할 수 있는데, Requests에서 지원하는 status code와 일부 차이가 있다.

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

 

List of HTTP status codes - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Response codes of the Hypertext Transfer Protocol This is a list of Hypertext Transfer Protocol (HTTP) response status codes. Status codes are issued by a server in response to a clien

en.wikipedia.org

Requests에서 지원하는 status code의 종류는 아래 링크에서 확인할 수 있다.
https://github.com/psf/requests/blob/c45a4dfe6bfc6017d4ea7e9f051d6cc30972b310/requests/status_codes.py

 

psf/requests

A simple, yet elegant HTTP library. Contribute to psf/requests development by creating an account on GitHub.

github.com

 

Response 객체

요청(request)을 보내면 응답(response)을 python 객체로 받는다. 그리고 이 Response 객체는 많은 정보와 기능을 가지고 있다. 자주 쓰는 몇가지를 정리해보면

 

# 내가 보낸 request 객체에 접근 가능
response.request

# 응답 코드
response.status_code

# 200 (OK 코드)이 아닌 경우 에러 raise
response.raise_for_status()

# json response일 경우 딕셔너리 타입으로 바로 변환
response.json()

# content 속성을 통해 바이너리 타입으로 데이터를 받을 수 있다.
response.content

# text 속성을 통해 UTF-8로 인코딩된 문자열을 받을 수 있다.
response.text

# encoding 정보 확인
response.encoding

 

더 자세한 Response 객체의 속성과 함수는 아래 링크를 통해 확인할 수 있다.
https://github.com/psf/requests/blob/2ed84f55b22f19a1e1e8eea2e50963dce62052d3/requests/models.py

 

psf/requests

A simple, yet elegant HTTP library. Contribute to psf/requests development by creating an account on GitHub.

github.com

 

GET

get method로 데이터 보내기

 

import requests
# 1. 직접 입력해서 보내기
# url에 보내고자 하는 데이터를 입력해서 전송한다.
URL = "http://google.com?user=comp&num=42"
response = requests.get(URL)
print("status code :", response.status_code)

# 2. dict 이용하기
param = { "user" : "comp", "num" : 42 }
response = requests.get(URL, params=param)
print("status code :", response.status_code)

 

POST

HTTP 요청을 보내는 함수로 data 옵션을 사용하면, html 양식(form) 포맷의 데이터를 전송할 수 있고, json 또한 사용가능하다. 이 외에도 files 옵션을 통해 file을 전송할 수 있다.

import requests, json
URL = "https://google.com"

# data with json
data = {"outer": {"inner": "value"}}
response = requests.post(URL, data=data)
response = requests.post(URL, data=json.dumps(data))

# json
response = requests.post(URL, json={"name": "test"})

# files
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

 

TIMEOUT

timeout exception error를 raise 할 수 있다.

>>> requests.get('https://github.com/', timeout=0.001)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading