KevsRobots Learning Platform
By Kevin McAleer, 2 Minutes

CRUD applications are foundational to web development, allowing users to create, read, update, and delete resources. This lesson will demonstrate how to build a simple CRUD API for a resource like Item using FastAPI and Pydantic, including database integration and API testing.
Start by setting up a new FastAPI project and create a Pydantic model to represent the Item resource:
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
in_stock: bool = True
For simplicity, we’ll use an in-memory dictionary as our database. In a real-world scenario, you might integrate with SQL or NoSQL databases using ORMs or database drivers.
# This will act as our fake database
items_db = {}
Implement the CRUD operations as FastAPI endpoints. Each operation corresponds to a standard HTTP method: POST for create, GET for read, PUT for update, and DELETE for delete.
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.post("/items/")
async def create_item(item: Item):
if item.name in items_db:
raise HTTPException(status_code=400, detail="Item already exists")
items_db[item.name] = item
return item
@app.get("/items/{item_name}")
async def read_item(item_name: str):
if item_name not in items_db:
raise HTTPException(status_code=404, detail="Item not found")
return items_db[item_name]
@app.put("/items/{item_name}")
async def update_item(item_name: str, item: Item):
if item_name not in items_db:
raise HTTPException(status_code=404, detail="Item not found")
items_db[item_name] = item
return item
@app.delete("/items/{item_name}")
async def delete_item(item_name: str):
if item_name not in items_db:
raise HTTPException(status_code=404, detail="Item not found")
del items_db[item_name]
return {"message": "Item deleted successfully"}
After defining your endpoints, test your CRUD API using FastAPI’s automatic documentation (accessible at /docs) or tools like Postman and curl.
Extend the CRUD application by adding another resource, such as User, with its own set of CRUD endpoints. Consider implementing additional features like pagination for the read operation or validation checks for the create and update operations.
You can use the arrows ← → on your keyboard to navigate between lessons.
Comments