Python
- 基础
-
库
- 其他
- argparse命令行参数解析
- asyncio自带异步编程库
- aiofiles异步文件读写库
- beautifulsoup4_HTML_XML解析库
- colorama_在终端输出漂亮的字
- datasets数据集处理
- html2text
- httpx_HTTP请求库
- litellm
- loguru日志库
- numpy科学计算基础库
- pillow图像处理
- pydantic数据验证
- pyyaml
- requests_HTTP请求库
- tenacity重试
- tiktoken计算Token量
- torch机器学习_深度学习框架
- tomli TOML文件解析库
- tomllib 自带TOML文件解析库
- unidiff_文本_文件差异对比
- uvicorn_Web服务器
- langchain
**httpx 是一个功能强大、支持 HTTP/1.1 和 HTTP/2 的现代化 Python HTTP 客户端库,用于发送 HTTP 请求,类似于 requests,但支持异步和更多特性。**
---
## 一、httpx 是什么?(简单理解)
- httpx 是一个用来**发送 HTTP 请求**的 Python 库,功能类似大家熟悉的 `requests` 库。
- 但它比 `requests` 更现代,主要特点是:
- **支持同步和异步两种用法**
- **支持 HTTP/1.1 和 HTTP/2**
- **支持客户端证书、HTTP/2、连接池等高级功能**
- **更适配现代 Python 生态,特别是异步框架(如 FastAPI、aiohttp、Starlette 等)**
---
## 二、httpx 解决什么问题?
当你需要从 Python 代码中:
- 访问 RESTful API
- 爬取网页内容
- 调用第三方 HTTP 服务
- 发送 GET、POST、PUT、DELETE 等 HTTP 请求
你通常会用 `requests` 库,但 `requests` **只支持同步请求,不支持异步,也不支持 HTTP/2**。
**httpx 的优势在于:**
| 需求 | httpx 的解决方案 |
|------|------------------|
| 发送 HTTP 请求(类似 requests) | 提供几乎一致的 API,容易上手 |
| 异步 HTTP 请求 | 支持 `async/await`,适合异步编程(如 asyncio、FastAPI) |
| 高性能 HTTP/2 | 支持 HTTP/2 协议,提升访问效率 |
| 更现代的功能 | 支持客户端证书、超时控制、连接池等 |
---
## 三、安装 httpx
使用 pip 安装:
```bash
pip install httpx
```
如果需要 **异步支持 + HTTP/2**,可以安装:
```bash
pip install "httpx[http2]"
```
---
## 四、httpx 基本使用示例
### 1. 同步请求(类似 requests)
```python
import httpx
# 发送 GET 请求
response = httpx.get('https://httpbin.org/get')
print(response.status_code)
print(response.json())
```
### 2. 异步请求
```python
import asyncio
import httpx
async def fetch():
async with httpx.AsyncClient() as client:
response = await client.get('https://httpbin.org/get')
print(response.status_code)
print(response.json())
asyncio.run(fetch())
```
---
## 五、httpx 常用功能
| 功能 | 说明 |
|------|------|
| **GET / POST / PUT / DELETE** | 支持所有常用 HTTP 方法 |
| **同步和异步客户端** | 同步用 `httpx.get()`,异步用 `AsyncClient` |
| **HTTP/2 支持** | 可启用 HTTP/2 提升访问速度 |
| **超时设置** | 可设置请求超时时间 |
| **自定义请求头、Cookies、代理** | 和 requests 类似,用法直观 |
| **文件上传、表单提交** | 支持 multipart/form-data 等 |
| **客户端证书、认证** | 支持 SSL 客户端证书、Basic Auth 等 |
---
## 六、总结(中文)
> **httpx 是一个功能丰富、支持同步/异步、支持 HTTP/2 的现代 HTTP 客户端库,是 requests 的有力替代品,特别适合在异步编程、API 调用、微服务等场景下使用。**
---
✅ **简单来说:**
> 如果你需要一个**功能更强、支持异步和 HTTP/2 的 HTTP 请求库**,或者你正在使用 **FastAPI、asyncio 等异步框架**,那么 **httpx 是比 requests 更合适的选择**。它用法类似 requests,但更现代、更强大。