Как FastAPI обрабатывает валидацию запросов?
Вопрос проверяет понимание встроенной системы валидации запросов в FastAPI и использование библиотеки Pydantic.
Короткий ответ
FastAPI автоматически выполняет валидацию входящих данных с использованием аннотаций типов Python и моделей Pydantic. При обнаружении ошибки валидации возвращается подробный ответ с описанием проблемы.
Длинный ответ
FastAPI использует библиотеку Pydantic для валидации данных. Разработчик определяет структуру ожидаемых данных с помощью моделей Pydantic, а FastAPI автоматически проверяет входящие запросы на соответствие этим моделям. Если данные не проходят проверку, FastAPI возвращает HTTP-ответ с кодом 422 и подробным описанием ошибки.
Пример:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
in_stock: bool
@app.post("/items/")
def create_item(item: Item):
return {"item": item}
Если отправить запрос с некорректными данными (например, без поля name), FastAPI автоматически сгенерирует ответ:
{
"detail": [
{
"loc": ["body", "name"],
"msg": "field required",
"type": "value_error.missing"
}
]
}
Когда использовать:
- Валидация полезна для обеспечения надежности API, автоматической обработки ошибок и создания предсказуемых ответов для клиентов.