requests — HTTP 클라이언트#
requests 모듈은 Python requests 라이브러리와 유사한 최소한의 HTTP/HTTPS 클라이언트 API를 제공합니다. 각 요청 함수는 requests.Response 객체를 반환합니다.
예제:
import requests
# GET a JSON resource.
r = requests.get("https://httpbin.org/get")
print(r.status_code, r.reason)
print(r.json())
# POST JSON.
r = requests.post(
"https://httpbin.org/post",
json={"id": 1, "value": 42},
headers={"X-Source": "openmv"},
)
print(r.json())
Response 클래스#
- class requests.Response(code: int, reason: str, headers: bytes = None, content: bytes = None)#
HTTP 응답을 나타냅니다. 인스턴스는
requests.request및 메서드별 헬퍼에 의해 반환됩니다.- encoding: str#
requests.Response.headers와requests.Response.content를 디코딩하는 데 사용되는 문자열 인코딩입니다. 기본값은"utf-8"입니다.
- headers: str#
requests.Response.encoding으로 디코딩되어str로 반환된 응답 헤더입니다.
- content: str#
requests.Response.encoding으로 디코딩되어str로 반환된 응답 본문입니다.
- json() dict#
requests.Response.content를 JSON으로 파싱하여 결과 객체를 반환합니다.
함수#
- requests.request(method: str, url: str, data: bytes | str | None = None, json: Any | None = None, files: dict | None = None, headers: dict | None = None, auth: tuple | None = None, stream: Any | None = None, timeout: float | None = 5.0) Response#
url로 HTTP 요청을 보내고requests.Response를 반환합니다.method—str로 된 HTTP 메서드(예:"GET","POST")입니다.url— 대상 URL입니다.http://또는https://로 시작해야 합니다.data— 원시 요청 본문입니다.str은 전송 전에 UTF-8로 인코딩됩니다. 설정하면Content-Length가 자동으로 추가됩니다.json— JSON으로 직렬화되어 본문으로 전송되는 객체입니다.Content-Type: application/json을 설정합니다.files— 필드 이름을(filename, fileobj)튜플에 매핑하는 딕셔너리입니다.multipart/form-data로 전송됩니다.headers— 추가 요청 헤더의 딕셔너리입니다. 딕셔너리는 복사되므로 호출자의 딕셔너리는 절대 수정되지 않습니다(그리고auth를 위해 추가된Authorization헤더가 같은 딕셔너리를 재사용하는 이후 요청으로 새어 나가지 않습니다).auth— HTTP 기본 인증을 위한(username, password)튜플입니다.stream— API 호환성을 위해 허용되며 사용되지는 않습니다.timeout— 연결이 수립된 후 적용되는 소켓 타임아웃(초)입니다. 기본값은5.0이며, 무기한 대기하려면None을 전달하세요. 타임아웃이 만료되면OSError가 발생합니다.
Transfer-Encoding: chunked로 전송된 응답은 투명하게 디코딩되므로requests.Response.content에는 항상 청크가 해제된 본문이 담깁니다. 응답 헤더는 대소문자를 구분하지 않고 매칭됩니다. 리다이렉트는 따라가지 않습니다.Location헤더가 있는 3xx 응답은NotImplementedError를 발생시킵니다.
- requests.head(url: str, **kw: Any) Response#
HTTP
HEAD요청을 보내고Response를 반환합니다.HEAD는 서버가 상태 줄과 헤더만 응답하고 본문은 비어 있다는 점을 제외하면GET과 동일합니다. 리소스의 존재 여부를 확인하거나, 페이로드를 다운로드하지 않고Content-Length/Content-Type을 검사하거나, 더 무거운GET을 보내기 전에 URL을 탐색하는 데 사용하세요.인자:
url– 대상 URL입니다.http://또는https://로 시작해야 합니다.headers(키워드 인자) – 추가 요청 헤더의 딕셔너리입니다.auth(키워드 인자) – HTTP 기본 인증을 위한(username, password)튜플입니다.
request()의data/json/files/stream도 완전성을 위해 허용되지만HEAD에서는 의미가 있는 경우가 드뭅니다.
- requests.get(url: str, **kw: Any) Response#
HTTP
GET요청을 보내고Response를 반환합니다.GET은url로 식별되는 리소스의 표현을 가져오는 표준 동사입니다. 이는 안전하며(서버 측 상태 변경을 일으키지 않음) 멱등적입니다.인자:
url– 대상 URL입니다.http://또는https://로 시작해야 합니다.headers(키워드 인자) – 추가 요청 헤더의 딕셔너리입니다(예:Authorization또는Accept).auth(키워드 인자) – HTTP 기본 인증을 위한(username, password)튜플입니다.timeout(키워드 인자) – 소켓 타임아웃(초)입니다(기본값5.0).
data/json을 통한 요청 본문은 기반request()에서 허용되지만 대부분의 서버에서 무시됩니다.
- requests.post(url: str, **kw: Any) Response#
HTTP
POST요청을 보내고Response를 반환합니다.POST는url에 데이터를 제출하며, 일반적으로 새 종속 리소스를 생성하거나, 폼 제출을 트리거하거나, 작업을 호출합니다. 안전하지도 멱등적이지도 않으며, 반복 호출 시 중복 리소스가 생성될 수 있습니다.인자:
url– 대상 URL입니다.http://또는https://로 시작해야 합니다.data(키워드 인자) – 원시 요청 본문(bytes와 유사)입니다.Content-Length헤더를 자동으로 보냅니다.json(키워드 인자) – JSON으로 직렬화되어 본문으로 전송되는 객체입니다.Content-Type: application/json을 설정합니다.files(키워드 인자) – 필드 이름을(filename, fileobj)에 매핑하는 딕셔너리입니다.multipart/form-data로 전송됩니다.headers(키워드 인자) – 추가 요청 헤더의 딕셔너리입니다.auth(키워드 인자) – HTTP 기본 인증을 위한(username, password)튜플입니다.timeout(키워드 인자) – 소켓 타임아웃(초)입니다(기본값5.0). LLM API처럼 느린 엔드포인트에는 값을 높이세요.
data/json/files중 최대 하나만 전달하세요.
- requests.put(url: str, **kw: Any) Response#
HTTP
PUT요청을 보내고Response를 반환합니다.PUT은url의 리소스를 제공된 표현으로 교체하며, 존재하지 않으면 생성합니다. 이는 멱등적입니다. 동일한PUT을 반복하면 동일한 최종 상태가 됩니다.인자:
url– 대상 URL입니다.http://또는https://로 시작해야 합니다.data(키워드 인자) – 원시 교체 본문(bytes와 유사)입니다.json(키워드 인자) – JSON으로 직렬화되어 교체 본문으로 전송되는 객체입니다.Content-Type: application/json을 설정합니다.headers(키워드 인자) – 추가 요청 헤더의 딕셔너리입니다.auth(키워드 인자) – HTTP 기본 인증을 위한(username, password)튜플입니다.
새 표현을 전달하려면
data또는json중 하나를 전달하세요.
- requests.patch(url: str, **kw: Any) Response#
HTTP
PATCH요청을 보내고Response를 반환합니다.PATCH는url의 리소스에 부분적 수정을 적용합니다 – 요청 본문에 포함된 필드만 변경됩니다.PUT과 달리 멱등적일 필요는 없습니다(다만 많은 API가 멱등적으로 만듭니다).인자:
url– 대상 URL입니다.http://또는https://로 시작해야 합니다.data(키워드 인자) – 원시 델타 본문(bytes와 유사)입니다. 형식은 서버에 따라 다릅니다(예: JSON Patch, JSON Merge Patch).json(키워드 인자) – JSON으로 직렬화된 델타 객체입니다.Content-Type: application/json을 설정합니다.headers(키워드 인자) – 추가 요청 헤더의 딕셔너리입니다.auth(키워드 인자) – HTTP 기본 인증을 위한(username, password)튜플입니다.
- requests.delete(url: str, **kw: Any) Response#
HTTP
DELETE요청을 보내고Response를 반환합니다.DELETE는url의 리소스 제거를 요청합니다. 이는 멱등적입니다. 이미 삭제된 리소스를 삭제해도 오류가 아닙니다(서버는 일반적으로 404를 반환하지만 최종 상태는 동일합니다).인자:
url– 대상 URL입니다.http://또는https://로 시작해야 합니다.headers(키워드 인자) – 추가 요청 헤더의 딕셔너리입니다.auth(키워드 인자) – HTTP 기본 인증을 위한(username, password)튜플입니다.
data/json을 통한 본문은 기반request()에서 허용되지만DELETE와 함께 사용되는 경우는 드뭅니다.