3 changed files with 3 additions and 30 deletions
@ -1,26 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import Body, FastAPI, status |
|
||||
from fastapi.responses import JSONResponse |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
items = {"foo": {"name": "Fighters", "size": 6}, "bar": {"name": "Tenders", "size": 3}} |
|
||||
|
|
||||
|
|
||||
@app.put("/items/{item_id}") |
|
||||
async def upsert_item( |
|
||||
item_id: str, |
|
||||
name: Annotated[Union[str, None], Body()] = None, |
|
||||
size: Annotated[Union[int, None], Body()] = None, |
|
||||
): |
|
||||
if item_id in items: |
|
||||
item = items[item_id] |
|
||||
item["name"] = name |
|
||||
item["size"] = size |
|
||||
return item |
|
||||
else: |
|
||||
item = {"name": name, "size": size} |
|
||||
items[item_id] = item |
|
||||
return JSONResponse(status_code=status.HTTP_201_CREATED, content=item) |
|
||||
Loading…
Reference in new issue