fastapi
25 строк · 686.0 Байт
1from typing import Annotated
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[str | None, Body()] = None,
15size: Annotated[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