2026/7/31 6:02:42

07 FastAPI

07 FastAPI FastAPI 入门FastAPI 是什么FastAPI 是 Python 里写 Web API 的框架特点特点说明快性能接近 Node.js、Go简单几行代码就能起一个 API自动文档启动后访问 /docs 有交互式文档类型注解和第 19 课的类型注解无缝配合它和 Flask、Django 的区别Flask → 轻量灵活老项目多Django → 全栈带 ORM/模板适合完整网站FastAPI → 专注 API现代、异步友好Agent/LLM 项目首选最小示例与路由一个路径 一种方法 一个端点处理函数名随意不影响 URL返回 dict / list 自动变 JSON。fromfastapiimportFastAPI appFastAPI()app.get(/)defread_root():return{message:Hello, FastAPI!}app FastAPI()— 创建应用app.get(/)— 注册 GET 路由uvicorn ... :app --reload— 启动服务改代码自动重启http://127.0.0.1:8000/ → 看到 JSONhttp://127.0.0.1:8000/docs → Swagger 自动文档非常重要uvicorn 启动方式cdD:\yunyanshijie\skill_test\python_study .venv\Scripts\activate pipinstallfastapi uvicorn uvicorn lessons.stage3.28_fastapi_intro:app--reload方式 1命令行更接近实际部署习惯。uvicorn lessons.stage3.28_fastapi_intro:app--reload默认地址http://127.0.0.1:8000方式 2文件内启动if__name____main__:importuvicorn uvicorn.run(code.stage3.28_fastapi_intro:app,reloadTrue)参数类别路径参数Path ParameterURL 路径里的动态部分用 {变量名} 声明app.get(/users/{user_id}/posts/{post_id})defget_post(user_id:int,post_id:int):return{user_id:user_id,post_id:post_id}/users/3/posts/7 → user_id3, post_id7FastAPI 自动把字符串转成 int。查询参数Query ParameterURL 里 ? 后面的部分/items?skip0limit10app.get(/items)deflist_items(skip:int0,limit:int10):return{skip:skip,limit:limit,items:[]}路径参数 vs 查询参数路径参数查询参数写法/hello/{name}函数普通参数 默认值位置URL 路径里?keyvalue典型用途定位某个资源筛选、分页、可选配置例子/users/1/items?skip0limit10请求体与数据校验Pydantic BaseModel 是什么FastAPI 内置 Pydantic用来定义「请求/响应数据的形状」并自动校验。frompydanticimportBaseModelclassMessageCreate(BaseModel):name:strmessage:strpriority:int1classMessageCreateResponse(BaseModel):status:strecho:str含义调用方必须传 JSON且包含 name 和 message两个字段都必须是字符串缺字段或类型不对 → FastAPI 自动返回 422 Unprocessable Entity并说明哪里错了FastAPI 怎么接收请求体app.post(/messages)defcreate_message(data:MessageCreate)-MessageCreateResponse:return{status:ok,echo:f{data.name}说{data.message}}FastAPI 会自动读 Body 里的 JSON转成 MessageCreate 实例校验失败就返回 422不会进你的函数访问字段用 data.name、data.message像对象属性不是 data[“name”]。环境变量.env、python-dotenv、API Key 安全环境变量是什么操作系统和进程里的一组「键值对」程序启动时可以读取。# 注释以 # 开头 API_KEYsk-your-real-key-here APP_NAMEPython Study DEBUGtrue规则一行一个变量KEYvalue不要加引号除非值本身需要引号等号两边不要空格KEYvalue不是 KEY value值里有特殊字符时再用引号fromdotenvimportload_dotenv# dot.importos# Operating Systemload_dotenv()# 默认读取项目根目录的 .envvalueos.getenv(API_KEY)# 没有则返回 Nonevalueos.getenv(API_KEY,)# 没有则返回默认值 load_dotenv() 做的事读取 .env 文件把里面的键值写进 os.environ之后 os.getenv() 就能读到用时机在读取任何配置之前调用一次通常放在文件最顶部。Windows PowerShell 里也可以临时设置$env:API_KEY sk-testpython lessons/stage3/30_env_config.py关掉终端就没了。开发时更常用 .env 文件 持久保存。.env.example — 给队友的模板真实 Key 不能分享但要告诉别人需要哪些变量# .env.example — 可以提交到 Git API_KEYyour-api-key-here APP_NAMEPython Study DEBUGfalse