Подключить 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 после проверки нужного уровня в профиле обработчика.