HeaderCountAdapter

Count extraction from HTTP response headers.

  1. Overview

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-Count or X-Total — total number of records matching the query
  • X-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)