from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List app = FastAPI( title="FastAPI CRUD Example", description="A simple CRUD API with FastAPI", version="1.0.0", docs_url="/docs", redoc_url="/redoc" ) items = [] class Item(BaseModel): id: int name: str description: str = None @app.get("/") async def root(): return {"message": "Welcome to FastAPI CRUD API! Visit /docs for Swagger UI."} @app.get("/items", response_model=List[Item]) async def get_items(): return items @app.post("/items", response_model=Item) async def add_item(item: Item): if any(i.id == item.id for i in items): raise HTTPException(status_code=400, detail="Item ID already exists") items.append(item) return item @app.put("/items/{item_id}", response_model=Item) async def update_item(item_id: int, updated_item: Item): for index, item in enumerate(items): if item.id == item_id: items[index] = updated_item return updated_item raise HTTPException(status_code=404, detail="Item not found") @app.delete("/items/{item_id}") async def delete_item(item_id: int): for item in items: if item.id == item_id: items.remove(item) return {"message": "Item deleted"} raise HTTPException(status_code=404, detail="Item not found")