Как задать не обязательные поля в post запросах к fastAPI в python?

В FastAPI, как и во многих других фреймворках для разработки веб-приложений, есть возможность использовать необязательные поля в POST-запросах. Это позволяет клиентам отправлять только те данные, которые им необходимы, а также дает возможность устанавливать значения по умолчанию для этих полей.

Для определения необязательных полей в FastAPI используется тип Optional из модуля typing. Тип Optional определяет поле, которое может содержать значение или быть пустым (None). Вы можете использовать тип Optional для параметров функции или для полей класса в модуле Pydantic.

Рассмотрим пример. Предположим, у нас есть простой POST-маршрут, который принимает некоторые данные пользователя, включая имя и возраст:

from fastapi import FastAPI
from typing import Optional

app = FastAPI()

@app.post("/users/")
async def create_user(name: str, age: Optional[int] = None):
    user = {"name": name, "age": age}
    return user

В этом примере мы определяем функцию create_user в качестве обработчика POST-запроса на маршруте "/users/". Параметр name имеет тип str и является обязательным, в то время как параметр age имеет тип Optional[int] и по умолчанию равен None.

То есть, если мы отправим POST-запрос без параметра age, то внутри функции create_user значение age будет None. Если же мы укажем значение для параметра age при отправке POST-запроса, то это значение будет присвоено переменной age внутри функции.

Кроме того, FastAPI использует Pydantic для валидации и схематического отображения входных данных. Так что параметры функции create_user будут автоматически валидироваться и адаптироваться на основе их типов и аннотаций.

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