2.4 Маршрутизация в FastAPI
15 из 15 шагов пройдено
38 из 38 баллов  получено

Параметры по умолчанию

Иногда нам необходимо указать значения по умолчанию для параметров запроса и параметров пути некоторых служб API, чтобы избежать сообщений об ошибках. Установка значений по умолчанию для параметров позволит выполнить метод API с указанием значений параметров или без них. В зависимости от требований, назначенные значения по умолчанию обычно равны 0 для числовых типов, False для типов bool, пустой строке для строковых типов, пустому списку ([]) для типов List и пустому словарю ({}) для типов Dict.

Попробуем применить значения по умолчанию к параметрам пути, для этого возьмем код из прошлой лекции:

from fastapi import FastAPI

app = FastAPI()


@app.get("/user")
async def login(username: str, age: int) -> dict:
    return {"user": username, "age": age}

Запустим приложение и перейдем на страницу документации, и мы увидим что поля username и age выделены надписью *required, это значит что они являются обязательными.

Попробуем установить значение по умолчанию для параметра age = 30.

from fastapi import FastAPI

app = FastAPI()


@app.get("/user")
async def login(username: str, age: int = 30) -> dict:
    return {"user": username, "age": age}

Мы установили значение по умолчанию для параметра age, и теперь при просмотре документации мы увидим  следующий вывод:

А при переходе по адресу http://127.0.0.1:8000/user?username=Ilya, мы уже увидим подставленное значение по умолчанию.

Таким же образом, если мы укажем значение поля как None, то мы сможем объявить age как необязательный параметр.

from fastapi import FastAPI

app = FastAPI()


@app.get("/user")
async def login(username: str, age: int | None = None) -> dict:
    return {"user": username, "age": age}

В этом случае, параметр  age будет не обязательным и будет иметь значение None по умолчанию. И теперь если мы перейдем по адресу http://127.0.0.1:8000/user?username=Ilya, то получим следующий результат:

И перейдя в документацию нашего API мы увидим что поле age не является обязательным(отсутствует *required)

В маршрутах, построенных в этом разделе, отсутствовали модели, также известные как схемы. В следующем разделе мы рассмотрим модели Pydantic и варианты их использования.


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