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

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/30 19:41:56
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/1 19:32:23
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻