HeaderCountAdapter
Count extraction from HTTP response headers.
Overview
Many REST APIs communicate total record counts via response headers. This adapter reads common count headers (case-insensitive) and returns the extracted values.
This is the default count adapter used by ApiBackend.
Supported headers
X-Total-CountorX-Total— total number of records matching the queryX-Total-Pages— total number of pages
Usage
import clearskies
# Explicit usage (this is also the default when no count_adapter is provided):
backend = clearskies.backends.ApiBackend(
base_url="https://api.example.com",
count_adapter=clearskies.backends.adapters.HeaderCountAdapter(),
)
Custom header names
If your API uses different header names, subclass and override extract_count:
class MyCountAdapter(clearskies.backends.adapters.HeaderCountAdapter):
def extract_count(self, response_data, response_headers, query=None):
if not response_headers:
return (None, None)
total = response_headers.get("X-My-Api-Total")
pages = response_headers.get("X-My-Api-Pages")
if total is not None:
return (int(total), int(pages) if pages else None)
return (None, None)