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