开发者接口
辅助函数
Note
仅在控制台测试 HTTPX 或发起少量请求时使用这些函数。使用 Client
将启用 HTTP/2 和连接池,以获得更高效且持久的连接。
httpx.request
(method, url, *, params=None, content=None, data=None, files=None, json=None, headers=None, cookies=None, auth=None, proxy=None, timeout=Timeout(timeout=5.0), follow_redirects=False, verify=True, trust_env=True)发送HTTP请求。
参数:
- method - 新
Request
对象的HTTP方法:GET
、OPTIONS
、HEAD
、POST
、PUT
、PATCH
或DELETE
。 - url - 新
Request
对象的URL。 - params - (可选) 包含在URL中的查询参数,可以是字符串、 字典或二元组序列。
- content - (可选) 包含在请求体中的二进制内容,可以是字节或字节迭代器。
- data - (可选) 包含在请求体中的表单数据,作为字典传递。
- files - (可选) 包含在请求体中的上传文件字典。
- json - (可选) 包含在请求体中的可JSON序列化对象。
- headers - (可选) 包含在请求中的HTTP头部字典。
- cookies - (可选) 包含在请求中的Cookie项字典。
- auth - (可选) 发送请求时使用的认证类。
- proxy - (可选) 所有流量应路由到的代理URL。
- timeout - (可选) 发送请求时使用的超时配置。
- follow_redirects - (可选) 启用或禁用HTTP重定向。
- verify - (可选)
True
表示使用默认CA包的SSL上下文,False
表示禁用验证,或使用ssl.SSLContext
实例来自定义上下文。 - trust_env - (可选) 启用或禁用使用环境变量进行配置。
返回: Response
用法:
>>> import httpx
>>> response = httpx.request('GET', 'https://httpbin.org/get')
>>> response
<Response [200 OK]>
httpx.get
(url, *, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)发送GET
请求。
参数: 参见httpx.request
。
注意data
、files
、json
和content
参数在此函数中不可用,
因为GET
请求不应包含请求体。
httpx.options
(url, *, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)发送OPTIONS
请求。
参数: 参见httpx.request
。
注意data
、files
、json
和content
参数在此函数中不可用,
因为OPTIONS
请求不应包含请求体。
httpx.head
(url, *, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)发送HEAD
请求。
参数: 参见httpx.request
。
注意data
、files
、json
和content
参数在此函数中不可用,
因为HEAD
请求不应包含请求体。
httpx.post
(url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)发送POST
请求。
参数: 参见httpx.request
。
httpx.put
(url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)发送PUT
请求。
参数: 参见httpx.request
。
httpx.patch
(url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, verify=True, timeout=Timeout(timeout=5.0), trust_env=True)发送PATCH
请求。
参数: 参见httpx.request
。
httpx.delete
(url, *, params=None, headers=None, cookies=None, auth=None, proxy=None, follow_redirects=False, timeout=Timeout(timeout=5.0), verify=True, trust_env=True)发送DELETE
请求。
参数: 参见httpx.request
。
注意data
、files
、json
和content
参数在此函数中不可用,
因为DELETE
请求不应包含请求体。
httpx.stream
(method, url, *, params=None, content=None, data=None, files=None, json=None, headers=None, cookies=None, auth=None, proxy=None, timeout=Timeout(timeout=5.0), follow_redirects=False, verify=True, trust_env=True)Client
客户端
httpx.Client
(*, auth=None, params=None, headers=None, cookies=None, verify=True, cert=None, trust_env=True, http1=True, http2=False, proxy=None, mounts=None, timeout=Timeout(timeout=5.0), follow_redirects=False, limits=Limits(max_connections=100, max_keepalive_connections=20, keepalive_expiry=5.0), max_redirects=20, event_hooks=None, base_url='', transport=None, default_encoding='utf-8')一个具有连接池、HTTP/2、重定向、cookie持久化等功能的HTTP客户端。
可以在线程间共享使用。
用法:
>>> client = httpx.Client()
>>> response = client.get('https://example.org')
参数:
- auth - (可选) 发送请求时使用的认证类。
- params - (可选) 包含在请求URL中的查询参数,可以是 字符串、字典或二元组序列。
- headers - (可选) 发送请求时包含的HTTP头字典。
- cookies - (可选) 发送请求时包含的Cookie项字典。
- verify - (可选) 可以是
True
使用默认CA包的SSL上下文,False
禁用验证,或ssl.SSLContext
实例使用自定义上下文。 - http2 - (可选) 布尔值指示是否启用HTTP/2支持。默认为
False
。 - proxy - (可选) 所有流量应路由到的代理URL。
- timeout - (可选) 发送请求时使用的超时配置。
- limits - (可选) 使用的限制配置。
- max_redirects - (可选) 应跟随的重定向响应的最大数量。
- base_url - (可选) 构建请求URL时使用的基础URL。
- transport - (可选) 用于通过网络发送请求的传输类。
- trust_env - (可选) 启用或禁用使用环境变量进行配置。
- default_encoding - (可选) 用于解码响应文本的默认编码, 如果响应Content-Type头中未包含字符集信息。设置为可调用对象可自动检测 字符集。默认:"utf-8"。
headers
发送请求时要包含的HTTP头信息。
cookies
发送请求时要包含的Cookie值。
params
发送请求时URL中要包含的查询参数。
auth
当请求级别未传递认证类时使用的默认认证类。
另见认证。
request
(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=构建并发送请求。
等效于:
request = client.build_request(...)
response = client.send(request, ...)
关于各种参数如何与客户端级别配置合并,
请参阅Client.build_request()
、Client.send()
和
配置合并。
get
(self, url, *, params=None, headers=None, cookies=None, auth=发送GET
请求。
参数:参见httpx.request
。
head
(self, url, *, params=None, headers=None, cookies=None, auth=发送 HEAD
请求。
参数:参见 httpx.request
。
options
(self, url, *, params=None, headers=None, cookies=None, auth=发送OPTIONS
请求。
参数:参见httpx.request
。
post
(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=发送 POST
请求。
参数:参见 httpx.request
。
put
(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=发送 PUT
请求。
参数:参见 httpx.request
。
patch
(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=发送 PATCH
请求。
参数:参见 httpx.request
。
delete
(self, url, *, params=None, headers=None, cookies=None, auth=发送 DELETE
请求。
参数:参见 httpx.request
。
stream
(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=build_request
(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, timeout=send
(self, request, *, stream=False, auth=发送请求。
请求会原样发送,不做修改。
通常你会使用Client.build_request()
构建请求,
这样客户端级别的配置会合并到请求中,
但也支持直接传递显式的httpx.Request()
。
另请参阅:请求实例
close
(self)关闭传输层和代理。
AsyncClient
异步客户端
httpx.AsyncClient
(*, auth=None, params=None, headers=None, cookies=None, verify=True, cert=None, http1=True, http2=False, proxy=None, mounts=None, timeout=Timeout(timeout=5.0), follow_redirects=False, limits=Limits(max_connections=100, max_keepalive_connections=20, keepalive_expiry=5.0), max_redirects=20, event_hooks=None, base_url='', transport=None, trust_env=True, default_encoding='utf-8')一个具有连接池、HTTP/2、重定向、cookie持久化等功能的异步HTTP客户端。
可以在任务间共享使用。
用法:
>>> async with httpx.AsyncClient() as client:
>>> response = await client.get('https://example.org')
参数:
- auth - (可选) 发送请求时使用的认证类。
- params - (可选) 包含在请求URL中的查询参数,可以是 字符串、字典或二元组序列。
- headers - (可选) 发送请求时包含的HTTP头字典。
- cookies - (可选) 发送请求时包含的Cookie项字典。
- verify - (可选) 可以是
True
使用默认CA包的SSL上下文,False
禁用验证,或ssl.SSLContext
实例使用自定义上下文。 - http2 - (可选) 布尔值指示是否启用HTTP/2支持。默认为
False
。 - proxy - (可选) 所有流量应路由到的代理URL。
- timeout - (可选) 发送请求时使用的超时配置。
- limits - (可选) 使用的限制配置。
- max_redirects - (可选) 应跟随的重定向响应的最大数量。
- base_url - (可选) 构建请求URL时使用的基础URL。
- transport - (可选) 用于通过网络发送请求的传输类。
- trust_env - (可选) 启用或禁用使用环境变量进行配置。
- default_encoding - (可选) 用于解码响应文本的默认编码, 如果响应Content-Type头中未包含字符集信息。设置为可调用对象可自动检测 字符集。默认:"utf-8"。
headers
发送请求时要包含的HTTP头信息。
cookies
发送请求时要包含的Cookie值。
params
发送请求时URL中要包含的查询参数。
auth
当请求级别未传递认证类时使用的默认认证类。
另见认证。
request
(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=构建并发送请求。
等价于:
request = client.build_request(...)
response = await client.send(request, ...)
关于各参数如何与客户端级别配置合并,请参见
AsyncClient.build_request()
、AsyncClient.send()
及配置合并。
get
(self, url, *, params=None, headers=None, cookies=None, auth=发送 GET
请求。
参数: 参见 httpx.request
。
head
(self, url, *, params=None, headers=None, cookies=None, auth=发送 HEAD
请求。
参数: 参见 httpx.request
。
options
(self, url, *, params=None, headers=None, cookies=None, auth=发送 OPTIONS
请求。
参数: 参见 httpx.request
。
post
(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=发送 POST
请求。
参数: 参见 httpx.request
。
put
(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=发送 PUT
请求。
参数: 参见 httpx.request
。
patch
(self, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=发送 PATCH
请求。
参数: 参见 httpx.request
。
delete
(self, url, *, params=None, headers=None, cookies=None, auth=发送 DELETE
请求。
参数: 参见 httpx.request
。
stream
(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, auth=build_request
(self, method, url, *, content=None, data=None, files=None, json=None, params=None, headers=None, cookies=None, timeout=send
(self, request, *, stream=False, auth=发送请求。
请求将按原样发送,不做修改。
通常建议使用 AsyncClient.build_request()
构建请求,
以便合并客户端级别的配置,但也支持直接传递显式的
httpx.Request()
。
另见:请求实例
aclose
(self)关闭传输和代理。
Response
响应对象
一个 HTTP 响应。
def __init__(...)
.status_code
- int 状态码.reason_phrase
- str 原因短语.http_version
-"HTTP/2"
或"HTTP/1.1"
HTTP版本.url
- URL 请求URL.headers
- Headers 响应头.content
- bytes 原始字节内容.text
- str 解码后的文本内容.encoding
- str 编码格式.is_redirect
- bool 是否为重定向响应.request
- Request 原始请求对象.next_request
- Optional[Request] 下一个请求对象.cookies
- Cookies Cookie信息.history
- List[Response] 历史响应列表.elapsed
- timedelta 时间间隔- 从发送请求到对该请求的响应调用
close()
之间经过的时间。 使用 total_seconds() 方法可以准确获取总耗时秒数。 def .raise_for_status()
- Response 检查状态码是否成功def .json()
- Any 解析JSON响应def .read()
- bytes 读取响应内容def .iter_raw([chunk_size])
- bytes iterator 原始字节迭代器def .iter_bytes([chunk_size])
- bytes iterator 字节块迭代器def .iter_text([chunk_size])
- text iterator 文本迭代器def .iter_lines()
- text iterator 行迭代器def .close()
- None 关闭响应def .next()
- Response 获取下一个响应def .aread()
- bytes 异步读取响应内容def .aiter_raw([chunk_size])
- async bytes iterator 异步原始字节迭代器def .aiter_bytes([chunk_size])
- async bytes iterator 异步字节块迭代器def .aiter_text([chunk_size])
- async text iterator 异步文本迭代器def .aiter_lines()
- async text iterator 异步行迭代器def .aclose()
- None 异步关闭响应def .anext()
- Response 异步获取下一个响应
Request
一个 HTTP 请求对象。可以显式构造以更精确地控制实际发送的内容。
>>> request = httpx.Request("GET", "https://example.org", headers={'host': 'example.org'})
>>> response = client.send(request)
def __init__(method, url, [params], [headers], [cookies], [content], [data], [files], [json], [stream])
.method
- str.url
- URL.content
- byte, byte iterator, 或 byte async iterator.headers
- Headers.cookies
- Cookies
URL
一个标准化、支持 IDNA 的 URL 对象。
>>> url = URL("https://example.org/")
>>> url.host
'example.org'
def __init__(url, **kwargs)
.scheme
- str.authority
- str.host
- str.port
- int.path
- str.query
- str.raw_path
- str.fragment
- str.is_ssl
- bool.is_absolute_url
- bool.is_relative_url
- booldef .copy_with([scheme], [authority], [path], [query], [fragment])
- URL
Headers
一个大小写不敏感的多值字典。
>>> headers = Headers({'Content-Type': 'application/json'})
>>> headers['content-type']
'application/json'
def __init__(self, headers, encoding=None)
def copy()
- Headers
Cookies
一个类字典的 cookie 存储对象。
>>> cookies = Cookies()
>>> cookies.set("name", "value", domain="example.org")
def __init__(cookies: [dict, Cookies, CookieJar])
.jar
- CookieJardef extract_cookies(response)
def set_cookie_header(request)
def set(name, value, [domain], [path])
def get(name, [domain], [path])
def delete(name, [domain], [path])
def clear([domain], [path])
- 标准可变映射接口
Proxy
代理服务器的配置。
>>> proxy = Proxy("http://proxy.example.com:8030")
>>> client = Client(proxy=proxy)
def __init__(url, [ssl_context], [auth], [headers])
.url
- URL.auth
- tuple[str, str].headers
- Headers.ssl_context
- SSLContext