← Back to Tutorials
25. CRUD Operations
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List, Optional
app = FastAPI()
class Item(BaseModel):
id: Optional[int] = None
name: str
price: float
is_offer: bool = False
# In-memory database
items_db = {}
counter = 0
# CREATE
@app.post("/items/", status_code=201)
def create_item(item: Item):
global counter
counter += 1
item.id = counter
items_db[item.id] = item
return item
# READ (all)
@app.get("/items/")
def list_items(skip: int = 0, limit: int = 10):
return list(items_db.values())[skip:skip+limit]
# READ (one)
@app.get("/items/{item_id}")
def get_item(item_id: int):
if item_id not in items_db:
raise HTTPException(404, "Item not found")
return items_db[item_id]
# UPDATE
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
if item_id not in items_db:
raise HTTPException(404, "Item not found")
item.id = item_id
items_db[item_id] = item
return item
# DELETE
@app.delete("/items/{item_id}", status_code=204)
def delete_item(item_id: int):
if item_id not in items_db:
raise HTTPException(404, "Item not found")
del items_db[item_id]
✏️ Exercise: Build a complete CRUD API for a Todo app (title, description, completed, due_date). Test all 5 operations in Swagger UI.