← ClaudeAtlas

web-controllers-and-routinglisted

Use when creating HTTP endpoints, controllers, middleware, or web routes in the Lexigram framework
dbtinoy-/lexigram-framework-skills · ★ 1 · Web & Frontend · score 72
Install: claude install-skill dbtinoy-/lexigram-framework-skills
# Web Controllers and Routing ## Overview Lexigram-web provides an async-first web layer on Starlette. Controllers group related routes via decorators, with full DI injection and middleware guards. ## Controller Pattern ```python from lexigram.web import Controller, get, post, put, delete from starlette.requests import Request # framework reuses Starlette's Request class UserController(Controller): def __init__(self, repo: UserRepositoryProtocol): self.repo = repo @get("/users") async def list_all(self, request: Request): result = await self.repo.find_all() return {"users": [u.to_dict() for u in result]} @get("/users/{user_id}") async def get_one(self, request: Request, user_id: str): result = await self.repo.find(user_id) return result.match( ok=lambda u: {"user": u.to_dict()}, err=lambda e: ({"error": str(e)}, 404), ) @post("/users") async def create(self, request: Request): data = await request.json() result = await self.repo.create(data) return result.match( ok=lambda u: ({"user": u.to_dict()}, 201), err=lambda e: ({"error": str(e)}, 400), ) @delete("/users/{user_id}") async def delete(self, user_id: str): await self.repo.delete(user_id) return {"ok": True} ``` ## Guards and Middleware ```python from lexigram.web.security import use_guards, AuthGuard from lexigram.contracts.web.guard