[Python] Requests

[Python] Requests updated_at: 2024-04-04 11:50

Requests

requests는 파이썬으로 HTTP 통신이 필요한 프로그램을 작성할 때 가장 많이 사용되는 라이브러리입니다. 특히 원격에 있는 API를 호출할 때 유용하게 사용할 수 있는데요. 이번 포스팅에서는 requests 라이브러리를 사용하는 방법에 대해서 알아보겠습니다.

Install

 pip install requests

API

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

Response(응답)

응답상태 (status_code)

response = requests.get("조회 URL")
response.status_code # 200, 201, 404 등 다양한 응답상태 확인

응답전문(content, text, json)

response = requests.get("조회 URL")
response.content # 바이너리 원본
response.text # UTF-8로 인코딩된 문자열
response.json() # JSON 형식

응답 헤더(headers)

response = requests.get("조회 URL")
response.headers # 딕셔너리 형태로 응답헤더 정보 출력

response.request

내가 보낸 request 객체에 접근 가능

response.raise_for_status()

200 (OK 코드)이 아닌 경우 에러 raise

response.encoding

encoding 정보 확인

Request (요청)

request query

# 조회 URL?userId=1
response = requests.get("요청 URL", params={"userId": "1"}) // GET 방식(query string 형식으로 요청)

data

data 옵션을 사용하면 Content-Type 이 application/x-www-form-urlencoded 로 자동 설정

requests.post("요청 URL", data={'name': 'pondol'})

json

json 옵션을 사용하면, REST API로 JSON 포맷의 데이터를 전송할 수 있으며, 이 때 Content-Type 요청 헤더는 application/json로 자동 설정

requests.post("요청 URL", json={'name': 'pondol'})

headers

headers 옵션을 사용하면 요청 헤더도 직접 설정할 수 있는데요. 인증 토큰을 보낼 때 유용하게 사용할 수 있습니다.

requests.post("요청 URL", headers={'Authorization': 'Bearer 12345'})

Request 예제

GET

get method로 데이터 보내기

import requests
# 1. 직접 입력해서 보내기
# url에 보내고자 하는 데이터를 입력해서 전송한다.
response = requests.get(요청 URL)

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

POST

import requests, json


# 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)
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1