2025-03-28 14:38:01 +00:00

63 lines
1.8 KiB
Python

from fastapi import FastAPI, APIRouter, HTTPException
from pydantic import BaseModel
from typing import List
app = FastAPI()
# Router instance
router = APIRouter()
# Sample data model
class Item(BaseModel):
id: int
name: str
description: str = None
price: float
available: bool
# In-memory database (for demonstration)
items_db = []
# GET route to fetch all items
@router.get("/items", response_model=List[Item])
async def get_items():
return items_db
# GET route to fetch a single item by ID
@router.get("/items/{item_id}", response_model=Item)
async def get_item(item_id: int):
item = next((item for item in items_db if item.id == item_id), None)
if not item:
raise HTTPException(status_code=404, detail="Item not found")
return item
# POST route to create a new item
@router.post("/items", response_model=Item)
async def create_item(item: Item):
items_db.append(item)
return item
# PUT route to update an existing item by ID
@router.put("/items/{item_id}", response_model=Item)
async def update_item(item_id: int, updated_item: Item):
for index, item in enumerate(items_db):
if item.id == item_id:
items_db[index] = updated_item
return updated_item
raise HTTPException(status_code=404, detail="Item not found")
# DELETE route to delete an item by ID
@router.delete("/items/{item_id}")
async def delete_item(item_id: int):
global items_db
items_db = [item for item in items_db if item.id != item_id]
return {"detail": "Item deleted successfully"}
# Include the router in the main FastAPI app
app.include_router(router, prefix="/api/v1", tags=["items"])
# Root endpoint
@app.get("/")
async def root():
return {"message": "Welcome to the FastAPI app!"}