Добавить заголовки запроса#

Используйте markers.Header, когда заголовок относится к одному вызову. Явно задайте имя на проводе, если оно отличается от Python-поля.

Регистр имени не важен.

→ Request · GET /reports

Accept-Language: ru

← Response · 200 OK

{"locale": "ru", "request_id": null}
# examples/docs/request_headers.py
@dataclass(frozen=True, slots=True, kw_only=True)
class GetReport(HttpOperation[Report]):
    __http__ = Http.get("/reports")

    locale: Annotated[str, markers.Header("Accept-Language")] = "en"
    request_id: Annotated[Omittable[str], markers.Header("X-Request-ID")] = UNSET


class ReportsApi(SyncApi):
    get = op(GetReport)

locale всегда отправляется и по умолчанию равен en. request_id со значением UNSET не создаёт заголовок. SDK сохраняет объявленное написание имени для обработчиков, которые умеют передавать заголовки без нормализации.

Файл примера целиком
"""Map operation fields to HTTP request headers."""

from __future__ import annotations

from dataclasses import dataclass
from typing import Annotated

from eazy_sdk import UNSET, Http, HttpOperation, Omittable, SyncApi, op
from eazy_sdk.request import markers
from examples.docs.request_site import request_client


@dataclass(frozen=True, slots=True)
class Report:
    locale: str
    request_id: str | None


# docs:example:start
# examples/docs/request_headers.py
@dataclass(frozen=True, slots=True, kw_only=True)
class GetReport(HttpOperation[Report]):
    __http__ = Http.get("/reports")

    locale: Annotated[str, markers.Header("Accept-Language")] = "en"
    request_id: Annotated[Omittable[str], markers.Header("X-Request-ID")] = UNSET


class ReportsApi(SyncApi):
    get = op(GetReport)
# docs:example:end


def main() -> None:
    with request_client() as client:
        report = ReportsApi(client).get(locale="ru")

    print(f"locale: {report.locale}; request id: {report.request_id}")


if __name__ == "__main__":
    main()

Запуск: uv run python examples/docs/request_headers.py.

locale: ru; request id: None

Не передавайте заголовки авторизации, подписи или управляемой защиты как обычные аргументы. Эти значения принадлежат Identity и политикам клиента, которые применяются при подготовке каждой попытки.

Дальше#