fastapi
25 строк · 705.0 Байт
1from typing import Annotated, Union
2
3from fastapi import Body, FastAPI, status
4from fastapi.responses import JSONResponse
5
6app = FastAPI()
7
8items = {"foo": {"name": "Fighters", "size": 6}, "bar": {"name": "Tenders", "size": 3}}
9
10
11@app.put("/items/{item_id}")
12async def upsert_item(
13item_id: str,
14name: Annotated[Union[str, None], Body()] = None,
15size: Annotated[Union[int, None], Body()] = None,
16):
17if item_id in items:
18item = items[item_id]
19item["name"] = name
20item["size"] = size
21return item
22else:
23item = {"name": name, "size": size}
24items[item_id] = item
25return JSONResponse(status_code=status.HTTP_201_CREATED, content=item)
26