A next generation HTTP client for Python 3 with HTTP/2 support, async/await capabilities, and requests-compatible API.
—
High-level convenience functions for making HTTP requests without managing client instances. These functions provide a requests-compatible API with full support for all standard HTTP methods and modern features like HTTP/2, async capabilities, and comprehensive configuration options.
Each function creates a temporary client instance, makes the request, and cleans up automatically, making them ideal for one-off requests or simple scripts.
Performs HTTP GET requests for retrieving data from servers.
def get(url, *, params=None, headers=None, cookies=None, stream=False, auth=None, allow_redirects=True, cert=None, verify=True, timeout=None):
"""
Sends a GET request.
Parameters:
- url (URLTypes): URL for the request
- params (QueryParamTypes, optional): Query parameters to append to URL
- headers (HeaderTypes, optional): HTTP headers to send
- cookies (CookieTypes, optional): Cookies to send
- stream (bool): If True, download response content as a stream
- auth (AuthTypes, optional): Authentication credentials
- allow_redirects (bool): Whether to follow redirects (default: True)
- cert (CertTypes, optional): Client certificate for SSL
- verify (VerifyTypes): SSL certificate verification (default: True)
- timeout (TimeoutTypes, optional): Request timeout configuration
Returns:
Response: HTTP response object
"""Usage Example:
import http3
# Simple GET request
response = http3.get('https://api.example.com/users')
print(response.json())
# GET with query parameters and headers
response = http3.get(
'https://api.example.com/search',
params={'q': 'python', 'limit': 10},
headers={'Authorization': 'Bearer token'},
timeout=30.0
)Performs HTTP POST requests for sending data to servers, including support for JSON, form data, and file uploads.
def post(url, *, data=None, files=None, json=None, params=None, headers=None, cookies=None, stream=False, auth=None, allow_redirects=True, cert=None, verify=True, timeout=None):
"""
Sends a POST request.
Parameters:
- url (URLTypes): URL for the request
- data (RequestData, optional): Raw request body data
- files (RequestFiles, optional): Files to upload (multipart/form-data)
- json (Any, optional): JSON data to send (sets Content-Type to application/json)
- params (QueryParamTypes, optional): Query parameters to append to URL
- headers (HeaderTypes, optional): HTTP headers to send
- cookies (CookieTypes, optional): Cookies to send
- stream (bool): If True, download response content as a stream
- auth (AuthTypes, optional): Authentication credentials
- allow_redirects (bool): Whether to follow redirects (default: True)
- cert (CertTypes, optional): Client certificate for SSL
- verify (VerifyTypes): SSL certificate verification (default: True)
- timeout (TimeoutTypes, optional): Request timeout configuration
Returns:
Response: HTTP response object
"""Usage Example:
import http3
# POST with JSON data
response = http3.post(
'https://api.example.com/users',
json={'name': 'John', 'email': 'john@example.com'}
)
# POST with form data
response = http3.post(
'https://example.com/login',
data={'username': 'user', 'password': 'pass'}
)
# POST with file upload
with open('document.pdf', 'rb') as f:
response = http3.post(
'https://api.example.com/upload',
files={'file': f}
)Performs HTTP PUT requests for updating or creating resources on the server.
def put(url, *, data=None, files=None, json=None, params=None, headers=None, cookies=None, stream=False, auth=None, allow_redirects=True, cert=None, verify=True, timeout=None):
"""
Sends a PUT request.
Parameters: Same as post()
Returns:
Response: HTTP response object
"""Performs HTTP PATCH requests for partial updates to resources.
def patch(url, *, data=None, files=None, json=None, params=None, headers=None, cookies=None, stream=False, auth=None, allow_redirects=True, cert=None, verify=True, timeout=None):
"""
Sends a PATCH request.
Parameters: Same as post()
Returns:
Response: HTTP response object
"""Performs HTTP DELETE requests for removing resources from the server.
def delete(url, *, data=None, files=None, json=None, params=None, headers=None, cookies=None, stream=False, auth=None, allow_redirects=True, cert=None, verify=True, timeout=None):
"""
Sends a DELETE request.
Parameters: Same as post()
Returns:
Response: HTTP response object
"""Performs HTTP HEAD requests to retrieve headers only (no response body).
def head(url, *, params=None, headers=None, cookies=None, stream=False, auth=None, allow_redirects=False, cert=None, verify=True, timeout=None):
"""
Sends a HEAD request.
Parameters:
- url (URLTypes): URL for the request
- params (QueryParamTypes, optional): Query parameters to append to URL
- headers (HeaderTypes, optional): HTTP headers to send
- cookies (CookieTypes, optional): Cookies to send
- stream (bool): If True, download response content as a stream
- auth (AuthTypes, optional): Authentication credentials
- allow_redirects (bool): Whether to follow redirects (default: False)
- cert (CertTypes, optional): Client certificate for SSL
- verify (VerifyTypes): SSL certificate verification (default: True)
- timeout (TimeoutTypes, optional): Request timeout configuration
Returns:
Response: HTTP response object (with empty body)
"""Performs HTTP OPTIONS requests to query server capabilities and allowed methods.
def options(url, *, params=None, headers=None, cookies=None, stream=False, auth=None, allow_redirects=True, cert=None, verify=True, timeout=None):
"""
Sends an OPTIONS request.
Parameters: Same as get()
Returns:
Response: HTTP response object
"""Performs HTTP requests with any method, providing maximum flexibility.
def request(method, url, *, params=None, data=None, files=None, json=None, headers=None, cookies=None, auth=None, timeout=None, allow_redirects=True, cert=None, verify=True, stream=False):
"""
Sends a request with the given HTTP method.
Parameters:
- method (str): HTTP method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, etc.)
- url (URLTypes): URL for the request
- params (QueryParamTypes, optional): Query parameters to append to URL
- data (RequestData, optional): Raw request body data
- files (RequestFiles, optional): Files to upload (multipart/form-data)
- json (Any, optional): JSON data to send
- headers (HeaderTypes, optional): HTTP headers to send
- cookies (CookieTypes, optional): Cookies to send
- auth (AuthTypes, optional): Authentication credentials
- timeout (TimeoutTypes, optional): Request timeout configuration
- allow_redirects (bool): Whether to follow redirects (default: True)
- cert (CertTypes, optional): Client certificate for SSL
- verify (VerifyTypes): SSL certificate verification (default: True)
- stream (bool): If True, download response content as a stream
Returns:
Response: HTTP response object
"""Usage Example:
import http3
# Custom HTTP method
response = http3.request('PROPFIND', 'https://webdav.example.com/files/')
# Custom method with full configuration
response = http3.request(
'PATCH',
'https://api.example.com/users/123',
json={'status': 'active'},
headers={'Content-Type': 'application/json'},
timeout=10.0
)All request functions support these common configuration parameters:
All request functions may raise these exceptions:
Install with Tessl CLI
npx tessl i tessl/pypi-http3