fastapi
37 строк · 1.0 Кб
1from typing import Union
2
3from fastapi import FastAPI
4from fastapi.encoders import jsonable_encoder
5from pydantic import BaseModel
6
7app = FastAPI()
8
9
10class Item(BaseModel):
11name: Union[str, None] = None
12description: Union[str, None] = None
13price: Union[float, None] = None
14tax: float = 10.5
15tags: list[str] = []
16
17
18items = {
19"foo": {"name": "Foo", "price": 50.2},
20"bar": {"name": "Bar", "description": "The bartenders", "price": 62, "tax": 20.2},
21"baz": {"name": "Baz", "description": None, "price": 50.2, "tax": 10.5, "tags": []},
22}
23
24
25@app.get("/items/{item_id}", response_model=Item)
26async def read_item(item_id: str):
27return items[item_id]
28
29
30@app.patch("/items/{item_id}", response_model=Item)
31async def update_item(item_id: str, item: Item):
32stored_item_data = items[item_id]
33stored_item_model = Item(**stored_item_data)
34update_data = item.dict(exclude_unset=True)
35updated_item = stored_item_model.copy(update=update_data)
36items[item_id] = jsonable_encoder(updated_item)
37return updated_item
38