目录
01初识 httpcore
httpcore 是一个底层的 HTTP 客户端库,提供了高效的 HTTP 请求处理能力。它是 httpx 的核心部分,专注于提供低级别的 HTTP 功能,可以直接与 HTTP 协议进行交互。httpcore 设计简单,性能卓越,非常适合需要细粒度控制 HTTP 请求的场景。
为什么选择 httpcore?
-
高效性能异步支持:httpcore 采用异步 I/O,性能优异,适合高并发场景。
-
灵活控制HTTP/1.1和HTTP/2支持:提供低级别的 HTTP 功能,让你可以精细控制请求和响应,同时支持HTTP/1.1和HTTP/2协议。
-
易于集成:可以轻松与其他 Python 库集成,扩展性强。
-
连接池管理:自动管理连接池,复用连接以提高性能。
-
低级请求/响应接口:提供底层的请求/响应接口,给予使用者更多的控制权。使用httpcore可以发送HTTP请求,并获取响应。它支持同步和异步两种操作方式。
听起来很不错吧?接下来,让我们安装并配置 httpcore,开始我们的精彩旅程!
Github 项目地址:
https://github.com/encode/httpcore
02安装与配置
安装 httpcore
httpcore 的安装非常简单,只需要一行命令:
pip install httpcore
03基础操作
发送简单的 GET 请求
让我们从一个简单的 GET 请求开始:
import httpcore
# 创建一个 HTTP 客户端
client = httpcore.SyncClient()
# 发送 GET 请求
response = client.request("GET", "https://httpbin.org/get")
# 输出响应内容
print(response.status_code)
print(response.headers)
print(response.content)
再来一个简单的GET请求并获取响应例子:
import httpcore
# 创建一个同步HTTP连接
with httpcore.SyncConnectionPool() as http:
# 定义请求方法、URL和头部
method = b'GET'
url = (b'http', b'example.com', None, b'/')
headers = [(b'host', b'example.com')]
# 发送请求并接收响应
response = http.request(method, url, headers=headers)
# 解包响应数据
http_version, status_code, reason_phrase, headers, stream = response
# 读取响应体
body = b''.join([chunk for chunk in stream])
print(f'Status code: {status_code}')
print(f'Body: {body.decode("utf-8")}')
发送 POST 请求
接下来,我们发送一个 POST 请求,并附带一些数据:
import httpcore
# 创建一个 HTTP 客户端
client = httpcore.SyncClient()
# 发送 POST 请求
response = client.request(
"POST",
"https://httpbin.org/post",
headers={"Content-Type": "application/json"},
content=b'{"key": "value"}'
)
# 输出响应内容
print(response.status_code)
print(response.headers)
print(response.content)