Подключить Requests#

Установите extra requests:

uv add "eazy-sdk-core[requests]"

Фабрика создаёт requests.Session и передаёт ей каждый подготовленный запрос:

    # examples/docs/integration_requests.py
    with Client.requests(base_url=base_url) as client:
        return MessageApi(client).message()
Файл целиком
"""Runnable Requests integration example for the documentation."""

from __future__ import annotations

from dataclasses import dataclass

from eazy_sdk import Client, Http, HttpOperation, SyncApi, op

from .guide_site import GuideSite, guide_origin


@dataclass(frozen=True, slots=True)
class Message:
    id: int
    subject: str


@dataclass(frozen=True, slots=True)
class GetMessage(HttpOperation[Message]):
    __http__ = Http.get("/messages/42")


class MessageApi(SyncApi):
    message = op(GetMessage)


def load_message(base_url: str) -> Message:
    # docs:integration-requests:start
    # examples/docs/integration_requests.py
    with Client.requests(base_url=base_url) as client:
        return MessageApi(client).message()
    # docs:integration-requests:end


def main() -> None:
    site = GuideSite()
    with guide_origin(site) as base_url:
        message = load_message(base_url)
    print(f"message: {message.id} {message.subject}")


if __name__ == "__main__":
    main()
message: 42 План на пятницу

Requests поддерживает только синхронный Client. Для готовой сессии используйте Client.requests(base_url=..., session=session). Eazy SDK не закроет переданную сессию; закройте её там, где она была создана.

Адаптер отключает автоматические перенаправления, но Requests управляет частью служебных заголовков. Он не поддерживает повторяющиеся заголовки запроса и потоковое тело. Операция с такими требованиями завершится ошибкой до отправки, если её профиль требует точной поддержки.

Примечание

Если API чувствителен к порядку заголовков, их регистру или TLS-отпечатку, выберите HTTPX либо curl_cffi после проверки нужного уровня в профиле обработчика.

Дальше#