fastapi
54 строки · 1.5 Кб
1from typing import Annotated, Union2
3from fastapi import Body, FastAPI4from pydantic import BaseModel5
6app = FastAPI()7
8
9class Item(BaseModel):10name: str11description: Union[str, None] = None12price: float13tax: Union[float, None] = None14
15
16@app.put("/items/{item_id}")17async def update_item(18*,19item_id: int,20item: Annotated[21Item,22Body(23openapi_examples={24"normal": {25"summary": "A normal example",26"description": "A **normal** item works correctly.",27"value": {28"name": "Foo",29"description": "A very nice Item",30"price": 35.4,31"tax": 3.2,32},33},34"converted": {35"summary": "An example with converted data",36"description": "FastAPI can convert price `strings` to actual `numbers` automatically",37"value": {38"name": "Bar",39"price": "35.4",40},41},42"invalid": {43"summary": "Invalid data is rejected with an error",44"value": {45"name": "Baz",46"price": "thirty five point four",47},48},49},50),51],52):53results = {"item_id": item_id, "item": item}54return results55