Python에서 HTTP 요청을 보내고 응답을 받는 작업은 매우 흔한 일이며, 이를 수행하기 위해 requests 라이브러리가 널리 사용됩니다. requests 라이브러리는 HTTP 요청 및 응답을 처리하는 데 사용되는 클래스와 메서드를 제공합니다.
이 블로그 게시물에서는 requests 라이브러리의 요청과 응답 객체의 내부 구조를 살펴보겠습니다. 이를 통해 요청과 응답을 처리하는 방법을 더 잘 이해할 수 있을 것입니다.
요청 객체(Request Object)
요청 객체는 HTTP 요청을 나타내는 객체로, 다음과 같은 구조를 갖습니다.
import requests
response = requests.get('https://www.example.com')
request_object = response.request
위의 코드에서 response.request
를 통해 요청 객체에 액세스할 수 있습니다. 이 요청 객체는 다음과 같은 주요 속성을 포함합니다.
method
: HTTP 요청 메서드 (GET, POST, 등)url
: 요청 URLheaders
: 요청 헤더cookies
: 요청과 함께 전송되는 쿠키
요청 객체는 response.request
를 통해 응답 객체에서 액세스할 수 있으며, 이를 사용하여 요청을 바꿀 수도 있습니다. 예를 들어, request_object.headers
를 사용하여 헤더를 수정하거나, request_object.cookies
를 사용하여 쿠키를 변경할 수 있습니다.
응답 객체(Response Object)
응답 객체는 HTTP 응답을 나타내는 객체로, 다음과 같은 구조를 갖습니다.
import requests
response = requests.get('https://www.example.com')
응답 객체는 다음과 같은 주요 속성을 갖습니다.
status_code
: HTTP 상태 코드 (200, 404, 등)text
: 응답 본문 내용headers
: 응답 헤더cookies
: 응답과 함께 수신된 쿠키
응답 객체를 통해 HTTP 응답을 처리하고 원하는 정보를 추출할 수 있습니다. 예를 들어, response.status_code
는 상태 코드를 반환하며, response.text
는 응답 본문의 내용을 반환합니다.
또한, 응답 객체에서는 추가적으로 다음과 같은 메서드를 제공합니다.
response.json()
: 응답 본문을 JSON 형식으로 파싱하여 반환합니다.response.content
: 응답 본문 내용을 반환합니다. (바이너리 형식)response.raise_for_status()
: 응답이 실패할 경우 예외를 발생시킵니다.
요청과 응답 객체의 내부 구조를 이해하면 Python에서 requests 라이브러리를 사용하여 HTTP 요청과 응답을 보다 효과적으로 처리할 수 있습니다. 결국 웹 개발에서는 HTTP 통신이 핵심이므로 이러한 기능을 잘 숙지하는 것이 중요합니다.