Подставить значение в путь#

Используйте Path[T], когда API ждёт значение внутри адреса. Имя поля должно совпадать с заполнителем в шаблоне пути.

→ Request · GET /users/42

← Response · 200 OK

{"id": 42, "name": "Ada"}
# examples/docs/request_path.py
@dataclass(frozen=True, slots=True, kw_only=True)
class GetUser(HttpOperation[User]):
    __http__ = Http.get("/users/{user_id}")

    user_id: Path[int]


class UsersApi(SyncApi):
    get = op(GetUser)

Поле user_id заполняет {user_id} и принимает только int. Если Python-имя отличается от имени в URL, используйте Annotated[int, markers.Path("id")].

Файл примера целиком
"""Put a typed operation field into a URL path."""

from __future__ import annotations

from dataclasses import dataclass

from eazy_sdk import Http, HttpOperation, Path, SyncApi, op
from examples.docs.request_site import request_client


@dataclass(frozen=True, slots=True)
class User:
    id: int
    name: str


# docs:example:start
# examples/docs/request_path.py
@dataclass(frozen=True, slots=True, kw_only=True)
class GetUser(HttpOperation[User]):
    __http__ = Http.get("/users/{user_id}")

    user_id: Path[int]


class UsersApi(SyncApi):
    get = op(GetUser)
# docs:example:end


def main() -> None:
    with request_client() as client:
        user = UsersApi(client).get(user_id=42)

    print(f"user: {user.id} {user.name}")


if __name__ == "__main__":
    main()

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

user: 42 Ada

SDK отклоняет объявление, если заполнитель остался без поля, поле Path не имеет заполнителя или одно место описано дважды. Необязательный параметр пути невозможен: адрес должен быть однозначным до отправки.

Дальше#