# Starlette — The Little ASGI Framework That Shines > Starlette is a lightweight ASGI framework for building async web services in Python. It is the foundation that FastAPI is built on top of. Provides routing, middleware, WebSocket, GraphQL, background tasks, and streaming responses. ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: ## Quick Use ```bash pip install starlette uvicorn ``` ```python from starlette.applications import Starlette from starlette.routing import Route from starlette.responses import JSONResponse import uvicorn async def list_assets(request): return JSONResponse([{"repo": "react", "stars": 230000}]) async def create_asset(request): data = await request.json() return JSONResponse(data, status_code=201) app = Starlette(routes=[ Route("/api/assets", list_assets, methods=["GET"]), Route("/api/assets", create_asset, methods=["POST"]), ]) if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000) ``` ## Intro Starlette is a lightweight ASGI framework/toolkit for building async web services in Python. Created by Tom Christie (also creator of Django REST Framework), Starlette is the foundation that FastAPI is built on top of. It provides routing, middleware, WebSocket, GraphQL (via ariadne/strawberry), background tasks, streaming responses, and test client. - **Repo**: https://github.com/Kludex/starlette (originally encode/starlette) - **Stars**: 12K+ - **Language**: Python - **License**: BSD 3-Clause ## What Starlette Does - **ASGI** — fully async, works with uvicorn, hypercorn, daphne - **Routing** — path parameters, Mount for sub-apps - **Middleware** — CORS, GZip, HTTPS redirect, Trusted Host - **WebSocket** — native support - **Background tasks** — fire-and-forget after response - **Streaming** — StreamingResponse for large files - **Static files** — StaticFiles mount - **Test client** — httpx-based test client - **Event handlers** — startup/shutdown lifecycle ## Comparison | Framework | Level | Validation | |---|---|---| | Starlette | Low-level ASGI | Manual | | FastAPI | High-level (on Starlette) | Pydantic | | Litestar | High-level ASGI | msgspec/Pydantic | | Django | Full-stack WSGI/ASGI | Django forms | ## FAQ **Q: Starlette vs FastAPI?** A: FastAPI is essentially Starlette + Pydantic + auto-generated OpenAPI. Choose Starlette if you want more control or a lighter footprint; choose FastAPI if you want automatic docs and validation. ## Sources - Docs: https://www.starlette.io - GitHub: https://github.com/Kludex/starlette - License: BSD 3-Clause --- Source: https://tokrepo.com/en/workflows/starlette-little-asgi-framework-shines-41300507 Author: Script Depot