До этого делал «hello world» из дока и думал, что понял FastAPI. Сел писать реальный маршрут — создать объект — и всё посыпалось: почему данные не сохраняются, почему `create` не тот, откуда status. Бесило, что «в доке работало, а тут нет». Обида на себя перешла в злость, злость — в желание разобраться, а не бросить.
Нейтрально: за маршрутом уровня «создать» стоят три части: распарсить тело (Pydantic), выполнить действие, вернуть код. Если их смешать — путаница. Разделил:
from fastapi import FastAPI, status
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
@app.post("/items/", status_code=status.HTTP_201_CREATED)
def create(item: Item):
# здесь дальше — запись в базу/хранилище
return {"name": item.name, "price": item.price}
Разбор по слоям убрал панику. FastAPI «не магия»: за красивой декларацией схемы стоит Pydantic, который парсит и валидирует. Теперь, когда падает что-то одно, я понимаю, в каком из слоёв копать. Первый самостоятельный маршрут надолго останется в голове — именно потому, что сперва разозлил.