已有curl/requests示例,如何用httpx AsyncClient发送带体GET请求?
使用httpx AsyncClient发送带请求体的GET请求
对应你提供的curl和requests代码,以下是使用httpx AsyncClient实现带请求体GET请求的方案:
代码示例
import httpx import asyncio async def fetch_users(): # 定义请求头、URL参数和请求体数据 headers = { 'accept': 'application/json', 'Content-Type': 'application/json', } params = {'limit': '10'} json_data = [{'item_type': 'user', 'skip': 0}] # 初始化AsyncClient并发送请求 async with httpx.AsyncClient() as client: # 方式1:直接传入Python对象,httpx自动序列化JSON response = await client.get( 'http://localhost:8000/user/', params=params, headers=headers, json=json_data ) # 方式2:手动构造请求体字符串(完全匹配原curl格式) # request_body = '[\n {\n "item_type": "user",\n "skip": 0\n }\n]' # response = await client.get( # 'http://localhost:8000/user/', # params=params, # headers=headers, # content=request_body # ) # 处理响应 print(response.status_code) print(response.json()) # 执行异步函数 asyncio.run(fetch_users())
关键说明
- httpx的
get方法支持通过json参数传递Python数据结构,框架会自动完成JSON序列化并适配请求头,逻辑和requests一致。 - 如果需要严格匹配原curl请求的请求体格式(包括换行、空格),可以手动构造字符串并通过
content参数传入。 - 注意:部分服务器可能不兼容带请求体的GET请求,需确认目标API支持这种调用方式。
内容的提问来源于stack exchange,提问作者tobias
相关产品推荐
相关产品推荐

