Niquests is a simple, yet elegant, HTTP library that is a drop-in replacement for Requests, which is under feature freeze.
—
Core HTTP methods for making synchronous requests. These functions provide a simple interface for HTTP communication without requiring explicit session management. Each request creates a new connection that is automatically closed after completion.
The fundamental request function that all other HTTP methods build upon. Supports all HTTP methods and provides complete control over request parameters.
def request(
method: HttpMethodType,
url: str,
*,
params: QueryParameterType | None = None,
data: BodyType | None = None,
json: Any | None = None,
headers: HeadersType | None = None,
cookies: CookiesType | None = None,
files: MultiPartFilesType | MultiPartFilesAltType | None = None,
auth: HttpAuthenticationType | None = None,
timeout: TimeoutType | None = WRITE_DEFAULT_TIMEOUT,
allow_redirects: bool = True,
proxies: ProxyType | None = None,
verify: TLSVerifyType = True,
stream: bool = False,
cert: TLSClientCertType | None = None,
hooks: HookType[PreparedRequest | Response] | None = None,
retries: RetryType = DEFAULT_RETRIES,
) -> Response:
"""
Constructs and sends a Request with the specified HTTP method.
Args:
method: HTTP method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)
url: Target URL for the request
params: Query parameters to append to URL
data: Request body data (dict, list, bytes, or file-like object)
json: JSON serializable object to send in request body
headers: HTTP headers to include in request
cookies: Cookies to send with request
files: Files for multipart upload
auth: Authentication credentials
timeout: Request timeout in seconds
allow_redirects: Whether to follow HTTP redirects
proxies: Proxy configuration
verify: SSL certificate verification (bool or CA bundle path)
stream: Whether to download response immediately
cert: Client SSL certificate
hooks: Request/response lifecycle hooks
retries: Retry configuration
Returns:
Response object containing server response
"""Retrieves data from the specified URL. Commonly used for fetching web pages, API responses, and downloadable content.
def get(
url: str,
params: QueryParameterType | None = None,
*,
headers: HeadersType | None = None,
cookies: CookiesType | None = None,
auth: HttpAuthenticationType | None = None,
timeout: TimeoutType | None = READ_DEFAULT_TIMEOUT,
allow_redirects: bool = True,
proxies: ProxyType | None = None,
verify: TLSVerifyType = True,
stream: bool = False,
cert: TLSClientCertType | None = None,
hooks: HookType[PreparedRequest | Response] | None = None,
retries: RetryType = DEFAULT_RETRIES,
**kwargs: Any,
) -> Response:
"""
Sends a GET request to retrieve data from the specified URL.
Args:
url: Target URL
params: Query parameters to append to URL
headers: HTTP headers
cookies: Cookies to send
auth: Authentication credentials
timeout: Request timeout (defaults to read timeout)
allow_redirects: Follow redirects (default: True)
proxies: Proxy configuration
verify: SSL verification
stream: Stream response content
cert: Client certificate
hooks: Request hooks
retries: Retry configuration
**kwargs: Additional arguments
Returns:
Response object
"""Usage example:
# Simple GET request
response = niquests.get('https://api.example.com/data')
# GET with query parameters
params = {'q': 'search term', 'limit': 10}
response = niquests.get('https://api.example.com/search', params=params)
# GET with custom headers
headers = {'User-Agent': 'MyApp/1.0', 'Accept': 'application/json'}
response = niquests.get('https://api.example.com/data', headers=headers)Sends data to the server for processing. Commonly used for form submissions, API data creation, and file uploads.
def post(
url: str,
data: BodyType | None = None,
json: Any | None = None,
*,
params: QueryParameterType | None = None,
headers: HeadersType | None = None,
cookies: CookiesType | None = None,
files: MultiPartFilesType | MultiPartFilesAltType | None = None,
auth: HttpAuthenticationType | None = None,
timeout: TimeoutType | None = WRITE_DEFAULT_TIMEOUT,
allow_redirects: bool = True,
proxies: ProxyType | None = None,
verify: TLSVerifyType = True,
stream: bool = False,
cert: TLSClientCertType | None = None,
hooks: HookType[PreparedRequest | Response] | None = None,
retries: RetryType = DEFAULT_RETRIES,
) -> Response:
"""
Sends a POST request with optional data payload.
Args:
url: Target URL
data: Request body data
json: JSON data to serialize and send
params: Query parameters
headers: HTTP headers
cookies: Cookies
files: Files for multipart upload
auth: Authentication
timeout: Request timeout (defaults to write timeout)
allow_redirects: Follow redirects
proxies: Proxy configuration
verify: SSL verification
stream: Stream response
cert: Client certificate
hooks: Request hooks
retries: Retry configuration
Returns:
Response object
"""Usage example:
# POST with JSON data
data = {'name': 'John Doe', 'email': 'john@example.com'}
response = niquests.post('https://api.example.com/users', json=data)
# POST with form data
form_data = {'username': 'john', 'password': 'secret'}
response = niquests.post('https://example.com/login', data=form_data)
# POST with file upload
files = {'upload': open('document.pdf', 'rb')}
response = niquests.post('https://api.example.com/upload', files=files)Updates or replaces a resource on the server. Typically used for full resource updates in REST APIs.
def put(
url: str,
data: BodyType | None = None,
*,
json: Any | None = None,
params: QueryParameterType | None = None,
headers: HeadersType | None = None,
cookies: CookiesType | None = None,
files: MultiPartFilesType | MultiPartFilesAltType | None = None,
auth: HttpAuthenticationType | None = None,
timeout: TimeoutType | None = WRITE_DEFAULT_TIMEOUT,
allow_redirects: bool = True,
proxies: ProxyType | None = None,
verify: TLSVerifyType = True,
stream: bool = False,
cert: TLSClientCertType | None = None,
hooks: HookType[PreparedRequest | Response] | None = None,
retries: RetryType = DEFAULT_RETRIES,
) -> Response:
"""
Sends a PUT request to update or replace a resource.
Args:
url: Target URL
data: Request body data
json: JSON data to serialize and send
params: Query parameters
headers: HTTP headers
cookies: Cookies
files: Files for multipart upload
auth: Authentication
timeout: Request timeout
allow_redirects: Follow redirects
proxies: Proxy configuration
verify: SSL verification
stream: Stream response
cert: Client certificate
hooks: Request hooks
retries: Retry configuration
Returns:
Response object
"""Partially updates a resource on the server. Used for incremental updates in REST APIs.
def patch(
url: str,
data: BodyType | None = None,
*,
json: Any | None = None,
params: QueryParameterType | None = None,
headers: HeadersType | None = None,
cookies: CookiesType | None = None,
files: MultiPartFilesType | MultiPartFilesAltType | None = None,
auth: HttpAuthenticationType | None = None,
timeout: TimeoutType | None = WRITE_DEFAULT_TIMEOUT,
allow_redirects: bool = True,
proxies: ProxyType | None = None,
verify: TLSVerifyType = True,
stream: bool = False,
cert: TLSClientCertType | None = None,
hooks: HookType[PreparedRequest | Response] | None = None,
retries: RetryType = DEFAULT_RETRIES,
) -> Response:
"""
Sends a PATCH request for partial resource updates.
"""Removes a resource from the server. Used for resource deletion in REST APIs.
def delete(
url: str,
*,
params: QueryParameterType | None = None,
headers: HeadersType | None = None,
cookies: CookiesType | None = None,
auth: HttpAuthenticationType | None = None,
timeout: TimeoutType | None = WRITE_DEFAULT_TIMEOUT,
allow_redirects: bool = True,
proxies: ProxyType | None = None,
verify: TLSVerifyType = True,
stream: bool = False,
cert: TLSClientCertType | None = None,
hooks: HookType[PreparedRequest | Response] | None = None,
retries: RetryType = DEFAULT_RETRIES,
**kwargs: Any,
) -> Response:
"""
Sends a DELETE request to remove a resource.
"""Retrieves only the headers from a resource without downloading the body content. Useful for checking resource metadata, existence, or last-modified dates.
def head(
url: str,
*,
params: QueryParameterType | None = None,
headers: HeadersType | None = None,
cookies: CookiesType | None = None,
auth: HttpAuthenticationType | None = None,
timeout: TimeoutType | None = READ_DEFAULT_TIMEOUT,
allow_redirects: bool = False,
proxies: ProxyType | None = None,
verify: TLSVerifyType = True,
stream: bool = False,
cert: TLSClientCertType | None = None,
hooks: HookType[PreparedRequest | Response] | None = None,
retries: RetryType = DEFAULT_RETRIES,
**kwargs: Any,
) -> Response:
"""
Sends a HEAD request to retrieve only response headers.
Note: allow_redirects defaults to False for HEAD requests.
"""Queries the server for supported HTTP methods and capabilities for a specific resource. Used for CORS preflight requests and API discovery.
def options(
url: str,
*,
params: QueryParameterType | None = None,
headers: HeadersType | None = None,
cookies: CookiesType | None = None,
auth: HttpAuthenticationType | None = None,
timeout: TimeoutType | None = READ_DEFAULT_TIMEOUT,
allow_redirects: bool = True,
proxies: ProxyType | None = None,
verify: TLSVerifyType = True,
stream: bool = False,
cert: TLSClientCertType | None = None,
hooks: HookType[PreparedRequest | Response] | None = None,
retries: RetryType = DEFAULT_RETRIES,
**kwargs: Any,
) -> Response:
"""
Sends an OPTIONS request to query server capabilities.
"""All synchronous HTTP methods support these common parameters:
HttpMethodType = Literal["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"]
QueryParameterType = Union[dict, list, bytes]
HeadersType = Union[dict, Headers]
CookiesType = Union[dict, RequestsCookieJar]
BodyType = Union[str, bytes, dict, list, IOBase]
TimeoutType = Union[float, Tuple[float, float], TimeoutConfiguration]
TLSVerifyType = Union[bool, str, bytes]
TLSClientCertType = Union[str, Tuple[str, str], Tuple[str, str, str]]
ProxyType = dict
RetryType = Union[int, RetryConfiguration]
HookType = dictInstall with Tessl CLI
npx tessl i tessl/pypi-niquests