专心致志,做好一件事。
HTTP Core 包提供了一个极简的底层 HTTP 客户端,它只做一件事。发送 HTTP 请求。
它不提供任何上层 API 模型抽象,不处理重定向、 multipart 上传、构建认证头、透明 HTTP 缓存、URL 解析、会话 Cookie 处理、内容或字符集解码、处理 JSON、基于环境的配置默认值,或任何其他类似功能。
HTTP Core 提供的一些功能:
- 发送 HTTP 请求。
- 线程安全/任务安全的连接池。
- HTTP(S) 代理和 SOCKS 代理支持。
- 支持 HTTP/1.1 和 HTTP/2。
- 提供同步和异步接口。
- 对
asyncio和trio的异步后端支持。
Python 3.8+
仅支持 HTTP/1.1,请使用以下命令安装:
$ pip install httpcore还有一些可选的额外功能可用...
$ pip install httpcore['asyncio,trio,http2,socks']发送一个 HTTP 请求:
import httpcore
response = httpcore.request("GET", "https://www.example.com/")
print(response)
# <Response [200]>
print(response.status)
# 200
print(response.headers)
# [(b'Accept-Ranges', b'bytes'), (b'Age', b'557328'), (b'Cache-Control', b'max-age=604800'), ...]
print(response.content)
# b'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>\n\n<meta charset="utf-8"/>\n ...'顶层的 httpcore.request() 函数是为了方便使用。实际上,当您使用 httpcore 时,您通常会使用它提供的连接池功能。
import httpcore
http = httpcore.ConnectionPool()
response = http.request("GET", "https://www.example.com/")一旦准备就绪,请 前往文档。
您 可能 不想直接使用 HTTP Core。如果您正在编写类似 Python 中的代理服务,并且只需要最底层的支持,那么它可能是有意义的。但更常见的是,您会想使用更高级别的客户端库,例如 httpx。
httpcore 的动机是:
- 提供一个可重用的底层客户端库,其他包可以基于它进行构建。
- 在网络代码和客户端逻辑之间提供一个 非常清晰的接口划分,以便更容易地单独理解和推理每个部分。
包有以下依赖项...httpcore
h11certifi
以及以下可选的额外项...
anyio-pip install httpcore['asyncio']所需。trio-pip install httpcore['trio']所需。h2-pip install httpcore['http2']所需。socksio-pip install httpcore['socks']所需。
我们使用 SEMVER 作为我们的版本控制策略。
关于软件包版本之间的更改,请参阅我们的 项目变更日志。
我们建议将您的需求固定到最高主要版本,或更具体的版本范围:
pip install 'httpcore==1.*'