HTTPX
HTTPX 是一个功能全面的 Python 3 HTTP 客户端,提供同步和异步 API,并支持 HTTP/1.1 和 HTTP/2。
使用 pip 安装 HTTPX:
$ pip install httpx
现在,让我们开始使用:
>>> import httpx
>>> r = httpx.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
>>> r.text
'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...'
或者,使用命令行客户端:
# 命令行客户端是可选依赖项
$ pip install 'httpx[cli]'
现在我们可以直接从命令行使用 HTTPX...
发送请求...
特性
HTTPX 基于 requests
广为人知的易用性,为您提供:
- 广泛兼容的 requests API
- 标准同步接口,但也支持 异步操作(如有需要)
- 支持 HTTP/1.1 和 HTTP/2
- 能够直接向 WSGI 应用 或 ASGI 应用 发起请求
- 严格的全局超时控制
- 完整的类型注解
- 100% 测试覆盖率
以及 requests
的所有标准功能...
- 国际化域名和 URL
- 保持连接和连接池
- 带 Cookie 持久化的会话
- 浏览器式 SSL 验证
- 基本/摘要认证
- 优雅的键值对 Cookie
- 自动解压缩
- 自动内容解码
- Unicode 响应体
- 多部分文件上传
- HTTP(S) 代理支持
- 连接超时
- 流式下载
- .netrc 支持
- 分块请求
文档
要了解所有基础知识,请前往快速入门。
更多高级主题,请参阅高级部分、异步支持部分或HTTP/2部分。
开发者接口提供了全面的API参考。
如需了解与HTTPX集成的工具,请参阅第三方包。
依赖项
HTTPX项目依赖于以下优秀库:
httpcore
-httpx
的底层传输实现。h11
- HTTP/1.1支持。certifi
- SSL证书。idna
- 国际化域名支持。sniffio
- 异步库自动检测。
以及以下可选安装:
h2
- HTTP/2支持。(可选,通过httpx[http2]
安装)socksio
- SOCKS代理支持。(可选,通过httpx[socks]
安装)rich
- 富文本终端支持。(可选,通过httpx[cli]
安装)click
- 命令行客户端支持。(可选,通过httpx[cli]
安装)brotli
或brotlicffi
- "brotli"压缩响应解码。(可选,通过httpx[brotli]
安装)zstandard
- "zstd"压缩响应解码。(可选,通过httpx[zstd]
安装)
特别感谢requests
提供了本项目大量遵循的API布局,以及urllib3
在底层网络细节设计上的诸多启发。
安装
使用pip安装:
$ pip install httpx
如需包含可选的HTTP/2支持,请使用:
$ pip install httpx[http2]
如需包含可选的brotli和zstandard解码器支持,请使用:
$ pip install httpx[brotli,zstd]
HTTPX需要Python 3.9+版本