Передать cookie одного вызова#
Используйте markers.Cookie, если значение выбирает вызывающий: язык интерфейса, согласие,
параметр из документации API. Куки, которые ставит сам сайт, полями не объявляют: их несёт
библиотека, когда корень объявил Cookies(...). Ключ API, который вызывающий приносит сам и
который сайт ждёт в куке, задаёт CookieScheme.
→ Request · GET /dashboard
Cookie: experiment=new-nav
← Response · 200 OK
{"experiment": "new-nav", "widgets": 3}
# examples/docs/request_cookies.py
@dataclass(frozen=True, slots=True, kw_only=True)
class GetDashboard(HttpOperation[Dashboard]):
__http__ = Http.get("/dashboard")
experiment: Annotated[Omittable[str], markers.Cookie("experiment")] = UNSET
class DashboardApi(SyncApi):
get = op(GetDashboard)
experiment становится cookie с тем же именем. Значение UNSET не добавляет cookie. Несколько
объявленных значений SDK объединяет в один корректный заголовок Cookie.
Файл примера целиком
"""Map an operation argument to a request cookie."""
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 Dashboard:
experiment: str | None
widgets: int
# docs:example:start
# examples/docs/request_cookies.py
@dataclass(frozen=True, slots=True, kw_only=True)
class GetDashboard(HttpOperation[Dashboard]):
__http__ = Http.get("/dashboard")
experiment: Annotated[Omittable[str], markers.Cookie("experiment")] = UNSET
class DashboardApi(SyncApi):
get = op(GetDashboard)
# docs:example:end
def main() -> None:
with request_client() as client:
dashboard = DashboardApi(client).get(experiment="new-nav")
print(f"experiment: {dashboard.experiment}; widgets: {dashboard.widgets}")
if __name__ == "__main__":
main()
Запуск: uv run python examples/docs/request_cookies.py.
experiment: new-nav; widgets: 3