Skip to content

Basic CRUD Example

This is the smallest practical example in the documentation.

Use it when you want to generate a complete CRUD API from a single model with no relationships.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from fastapi import FastAPI
import motor.motor_asyncio
from fastapi_crudrouter_mongodb import CRUDRouter, MongoModel, ObjectIdType


client = motor.motor_asyncio.AsyncIOMotorClient("mongodb://localhost:27017/local")
db = client.local


class UserModel(MongoModel):
    id: ObjectIdType | None = None
    name: str
    email: str


users_router = CRUDRouter(
    model=UserModel,
    db=db,
    collection_name="users",
    prefix="/users",
    tags=["users"],
)


app = FastAPI(title="Basic CRUD Example")
app.include_router(users_router)

Generated routes

This example gives you:

  • GET /users
  • POST /users
  • GET /users/{id}
  • PUT /users/{id}
  • PATCH /users/{id}
  • DELETE /users/{id}

Run it

uvicorn main:app --reload

Then open http://localhost:8000/docs.