Web 框架
django、flask、fast-api、aiohttp、sanic、tornado。
35 分钟
Web 开发:FastAPI 入门
Python Web 生态中 FastAPI 以类型注解、自动 OpenAPI 文档和原生 async 著称,适合 API 与 AI 服务。同步框架 Django 适合全栈 CMS;本课聚焦 FastAPI。基础语法来自 python-fundamentals;Agent HTTP 工具对接见 ai-agents-essentials;/roadmaps/python。
学习目标
- 搭建最小 FastAPI 应用与路由
- 使用 Pydantic 模型校验请求/响应体
- 理解 ASGI、Uvicorn 与依赖注入基础
最小 API
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI(title="CodeRoadMap Lessons API")
class LessonOut(BaseModel):
slug: str
title: str
track: str = "python-advanced-essentials"
@app.get("/health")
async def health() -> dict[str, str]:
return {"status": "ok"}
@app.get("/lessons/{slug}", response_model=LessonOut)
async def get_lesson(slug: str) -> LessonOut:
return LessonOut(slug=slug, title=f"Lesson {slug}")
启动:
pip install fastapi uvicorn[standard]
uvicorn main:app --reload --port 8000
浏览器打开 http://127.0.0.1:8000/docs 查看 Swagger UI。
依赖注入
from fastapi import Depends, Header
async def verify_token(authorization: str | None = Header(default=None)) -> str:
if not authorization:
raise ValueError("missing token")
return authorization.removeprefix("Bearer ")
@app.get("/protected")
async def protected(token: str = Depends(verify_token)) -> dict[str, str]:
return {"token_prefix": token[:8]}
生产环境应换为 proper HTTPException 与 JWT 校验。
与 Java 后端对比
| FastAPI | Spring Boot | |
|---|---|---|
| 优势 | 快速原型、AI 集成、OpenAPI | 企业级事务、生态成熟 |
| 部署 | Uvicorn + Gunicorn / Docker | Jar + JVM |
| 类型 | Pydantic + typing | Java 静态类型 |
站内主 API 多为 Java;Python 服务适合辅助微服务、ML 推理、Webhook。
练习
- 添加 POST
/lessons,接收 JSON body 创建课时(内存 dict 即可) - 在 里试调 GET 与 POST