Response Object¶
The Response class represents an HTTP response from a server.
Properties¶
status_code¶
The HTTP status code as an integer.
response = requestx.get("https://httpbin.org/status/200")
print(response.status_code) # 200
reason_phrase¶
The HTTP reason phrase.
response = requestx.get("https://httpbin.org/status/404")
print(response.reason_phrase) # "Not Found"
headers¶
Response headers as a Headers object (case-insensitive).
response = requestx.get("https://httpbin.org/get")
print(response.headers.get("content-type")) # "application/json"
print(response.headers.get("Content-Type")) # Same result
url¶
The final URL after any redirects.
response = requestx.get("https://httpbin.org/redirect/1")
print(response.url) # "https://httpbin.org/get"
content¶
The response body as bytes.
response = requestx.get("https://httpbin.org/bytes/100")
print(len(response.content)) # 100
print(type(response.content)) # <class 'bytes'>
text¶
The response body decoded as a string.
response = requestx.get("https://httpbin.org/html")
print(response.text) # HTML content as string
cookies¶
Response cookies as a Cookies object.
response = requestx.get("https://httpbin.org/cookies/set/name/value")
print(response.cookies.get("name")) # "value"
elapsed¶
Time elapsed for the request in seconds.
response = requestx.get("https://httpbin.org/delay/1")
print(f"Request took {response.elapsed:.2f} seconds")
http_version¶
The HTTP version used for the response.
response = requestx.get("https://httpbin.org/get")
print(response.http_version) # "HTTP/1.1" or "HTTP/2"
Status Check Properties¶
is_success¶
True if the status code is 2xx.
response = requestx.get("https://httpbin.org/status/200")
print(response.is_success) # True
response = requestx.get("https://httpbin.org/status/404")
print(response.is_success) # False
is_redirect¶
True if the status code is 3xx.
response = requestx.get(
"https://httpbin.org/redirect/1",
follow_redirects=False
)
print(response.is_redirect) # True
is_client_error¶
True if the status code is 4xx.
response = requestx.get("https://httpbin.org/status/404")
print(response.is_client_error) # True
is_server_error¶
True if the status code is 5xx.
response = requestx.get("https://httpbin.org/status/500")
print(response.is_server_error) # True
is_error¶
True if the status code is 4xx or 5xx.
response = requestx.get("https://httpbin.org/status/404")
print(response.is_error) # True
Methods¶
json()¶
Parse the response body as JSON.
Response.json() -> dict | list
Returns: Parsed JSON data
Raises: DecodingError if the response is not valid JSON
Example:
response = requestx.get("https://httpbin.org/json")
data = response.json()
print(type(data)) # <class 'dict'>
raise_for_status()¶
Raise an exception for 4xx/5xx status codes.
Response.raise_for_status() -> None
Raises: HTTPStatusError for 4xx/5xx responses
Example:
import requestx
from requestx import HTTPStatusError
response = requestx.get("https://httpbin.org/status/404")
try:
response.raise_for_status()
except HTTPStatusError as e:
print(f"Error: {e}")
print(f"Status: {e.response.status_code}")
Boolean Conversion¶
Response objects can be used in boolean contexts. Returns True for successful responses (2xx).
response = requestx.get("https://httpbin.org/get")
if response:
print("Success!")
response = requestx.get("https://httpbin.org/status/404")
if not response:
print("Request failed")
Complete Example¶
import requestx
response = requestx.get("https://httpbin.org/json")
# Check status
print(f"Status: {response.status_code} {response.reason_phrase}")
print(f"Success: {response.is_success}")
# Access headers
print(f"Content-Type: {response.headers.get('content-type')}")
print(f"Content-Length: {response.headers.get('content-length')}")
# Get content
print(f"Text length: {len(response.text)}")
print(f"Bytes length: {len(response.content)}")
# Parse JSON
data = response.json()
print(f"JSON data: {data}")
# Timing
print(f"Elapsed: {response.elapsed:.3f}s")
# URL info
print(f"URL: {response.url}")
print(f"HTTP Version: {response.http_version}")
# Error handling
try:
response.raise_for_status()
print("No errors!")
except requestx.HTTPStatusError as e:
print(f"HTTP Error: {e}")
Headers Class¶
The Headers class provides case-insensitive access to HTTP headers.
get(name, default=None)¶
Get a header value by name.
content_type = response.headers.get("content-type")
custom = response.headers.get("x-custom", "default")
keys()¶
Get all header names.
for name in response.headers.keys():
print(name)
values()¶
Get all header values.
for value in response.headers.values():
print(value)
items()¶
Get all header name-value pairs.
for name, value in response.headers.items():
print(f"{name}: {value}")
Cookies Class¶
The Cookies class provides access to response cookies.
get(name, default=None)¶
Get a cookie value by name.
session = response.cookies.get("session")
keys()¶
Get all cookie names.
for name in response.cookies.keys():
print(name)
items()¶
Get all cookie name-value pairs.
for name, value in response.cookies.items():
print(f"{name}={value}")