Step 2: Routing and Models¶
Add modular routing and validated data models.
Define schemas¶
from pydantic import BaseModel, EmailStr
class UserOut(BaseModel):
id: int
email: EmailStr
class UserCreate(BaseModel):
email: EmailStr
Define a route module¶
from ravyn import get, post
from .schemas import UserCreate, UserOut
@get("/")
def list_users() -> list[UserOut]:
return [UserOut(id=1, email="alice@example.com")]
@post("/")
def create_user(payload: UserCreate) -> UserOut:
return UserOut(id=2, email=payload.email)
Compose routes with Include¶
from ravyn import Include, Ravyn
app = Ravyn(
routes=[Include("/users", namespace="app.users.routes")],
)
Checkpoint¶
GET /users/returns typed outputPOST /users/validates payload
Next step¶
Continue with Auth and Permissions.