Requests¶
OxideHTTP provides asynchronous methods for making HTTP requests. Each method returns a response object that can be used to inspect the status code, headers, and response body.
Making Requests¶
Create an OxideHTTP client and use it as an asynchronous context manager:
from oxidehttp import OxideHTTP
async with OxideHTTP() as client:
response = await client.get('https://api.example.com/users')
print(response.status_code)
The client supports the following convenience methods:
| Method | Description |
|---|---|
get() |
Sends a GET request. |
post() |
Sends a POST request. |
put() |
Sends a PUT request. |
patch() |
Sends a PATCH request. |
delete() |
Sends a DELETE request. |
For streaming and Server-Sent Events, OxideHTTP also exposes stream() and sse(). See Streaming and Server-Sent Events.
GET¶
Use get() to retrieve resources.
The method accepts the following arguments:
| Argument | Description |
|---|---|
url |
Request URL. |
params |
Query parameters. |
headers |
Request-specific headers. |
middlewares |
Middleware applied to this request. |
extensions |
Additional request extensions. |
cache_ttl |
Cache time-to-live. |
Example with query parameters:
POST¶
Use post() to create resources or submit data.
The method accepts:
| Argument | Description |
|---|---|
url |
Request URL. |
headers |
Request-specific headers. |
params |
Query parameters. |
json |
JSON request body. |
body_text |
Text request body. |
body_bytes |
Raw bytes request body. |
form |
Form data. |
middlewares |
Middleware applied to this request. |
extensions |
Additional request extensions. |
JSON Body¶
Use json to send JSON data:
Text Body¶
Use body_text to send a text payload:
Bytes Body¶
Use body_bytes to send raw bytes:
Form Data¶
Use form to submit form fields:
PUT¶
Use put() to replace or update a resource.
The method accepts:
| Argument | Description |
|---|---|
url |
Request URL. |
headers |
Request-specific headers. |
params |
Query parameters. |
json |
JSON request body. |
body_text |
Text request body. |
body_bytes |
Raw bytes request body. |
middlewares |
Middleware applied to this request. |
extensions |
Additional request extensions. |
PATCH¶
Use patch() to partially update a resource.
The method accepts:
| Argument | Description |
|---|---|
url |
Request URL. |
headers |
Request-specific headers. |
params |
Query parameters. |
json |
JSON request body. |
body_text |
Text request body. |
body_bytes |
Raw bytes request body. |
middlewares |
Middleware applied to this request. |
extensions |
Additional request extensions. |
DELETE¶
Use delete() to delete a resource.
The method accepts:
| Argument | Description |
|---|---|
url |
Request URL. |
headers |
Request-specific headers. |
params |
Query parameters. |
json |
JSON request body. |
middlewares |
Middleware applied to this request. |
extensions |
Additional request extensions. |
Query Parameters¶
Pass query parameters using the params argument:
Values are converted to strings when constructing the query string.
Boolean values are serialized as lowercase strings:
Resulting query parameters:
Multiple Values¶
Pass a sequence to provide multiple values for the same parameter:
This produces repeated query parameters:
Values set to None are not automatically omitted. Filter optional values before passing them if you want to exclude them from the query string.
Headers¶
Use headers to provide request-specific headers:
response = await client.get(
'/users',
headers={
'Authorization': 'Bearer YOUR_TOKEN',
'Accept': 'application/json',
},
)
Headers configured in OxideHTTPConfig are used as defaults. Request-specific headers are merged with the configured defaults.
See Configuration for configuring default headers.
Middleware¶
Middleware can be applied to individual requests through the middlewares argument:
You can also configure middleware globally through RequestConfig.
See Middleware for details and available middleware implementations.
Extensions¶
Use extensions to pass additional request extensions:
The accepted extension type is defined by OxideHTTP's public types.
Response Handling¶
Every convenience request method returns a response object.
response = await client.get('/users')
print(response.status_code)
print(response.headers)
body = await response.get_bytes()
text = await response.text()
For JSON responses:
OxideHTTP uses msgspec for JSON decoding. See Responses for response handling details.