在 Python 的 requests
库中,Response
对象是发送 HTTP 请求后得到的核心组件之一。它包含了从服务器返回的所有信息,如状态码、响应头、响应体等。理解 Response
对象对于处理 HTTP 请求的响应至关重要。
架构
requests
的 Response
对象架构基于几个关键概念:
- 状态码:表示 HTTP 请求的结果,如 200 表示成功,400 表示客户端错误,500 表示服务器错误等。
- 响应头:包含服务器发送的元数据,如内容类型、缓存指令、cookie 等。
- 响应体:包含服务器的实际返回内容,可以是文本、二进制数据、JSON 等。
- 请求信息:
Response
对象通常还包含有关生成该响应的请求的信息,如请求的 URL、方法等。
组件内容
- 状态码相关属性:如
status_code
、ok
(布尔值,表示状态码是否在 200-299 范围内)、reason
(HTTP 响应的原因短语)。 - 响应头相关属性和方法:如
headers
(一个字典,包含响应头)、cookies
(一个字典,包含从服务器接收的 cookie)。 - 响应体相关属性和方法:如
text
(以字符串形式返回响应体)、content
(以字节形式返回响应体)、json
(将响应体解析为 JSON)。 - 请求信息相关属性:如
request
(一个PreparedRequest
对象,表示生成该响应的请求)。
代码案例
下面是一个使用 requests
库发送 HTTP 请求并处理 Response
对象的示例代码:
import requests
# 发送一个 GET 请求
response = requests.get('https://httpbin.org/get')
# 检查状态码
print(f"Status Code: {response.status_code}")
# 检查响应头
print(f"Headers: {response.headers}")
# 检查响应体(文本形式)
print(f"Text: {response.text}")
# 检查响应体(JSON 形式)
print(f"JSON: {response.json()}")
# 检查请求信息
print(f"Request URL: {response.request.url}")
print(f"Request Headers: {response.request.headers}")
在这个示例中,我们使用 requests
库发送了一个 GET 请求到 httpbin.org
。然后,我们打印了响应的状态码、响应头、响应体(文本和 JSON 形式),以及生成该响应的请求的 URL 和头信息。
这个示例展示了如何使用 requests
库的 Response
对象来获取和处理 HTTP 响应的各个方面。通过理解 Response
对象的属性和方法,您可以轻松地访问和操作从服务器返回的数据。