打好基础——你的第一个 FastAPI 应用
我的理解
这一课的核心论点是:选择 FastAPI 不是因为性能,而是因为 AI 友好性。FastAPI 自动生成 Swagger UI 和 openapi.json,把 API 文档变成代码的副产品而非额外维护负担,这让 AI 编程助手能直接读懂你的接口并正确生成调用代码。配合 Pydantic 类型注解形成的”提早失败、快速失败”反馈回路,AI 生成的代码能迅速自我纠错。实践部分用 Cursor 通过一段自然语言 Prompt 生成 FastAPI 骨架、运行、调试、验证,完成了第一个”设计—实现—验证”闭环。
相关链接
- Ch02-L01 视频4 阶段A演示与讲解 — 总览视频中第一章的详细展开
- Ch02-L04 集成核心智能引擎 — 在 FastAPI 骨架之上接入 AI 引擎
- Ch02-L07 用全栈体验闭合产品闭环 — 利用 openapi.json 让 AI 生成前端
原文
Lesson 11 of 46 打好基础——你的第一个 FastAPI 应用 / Laying the Foundation — Your First FastAPI Application
架构师的选择——我们为何使用 FastAPI
每一个工程项目都始于决策。你在打地基阶段做出的选择,会对产品的整个生命周期产生复利式的影响。作为一名资深 Builder,你评估技术的首要视角不再仅仅是性能或功能,而是它对 AI 的友好程度。这是一个重要的思维转变。
我们选择 FastAPI 作为后端框架,正是这种 AI 优先思维的典型范例。虽然 FastAPI 以高性能著称,但这并不是我们选择它的首要原因。它真正的价值在于两条原则,能在你与 AI 伙伴协作时显著加速开发。
让我们先从一个根本性的问题谈起:当你构建一个后端服务(API)时,如何向他人——或向 AI——说明它的功能以及如何使用?传统做法是手动编写并维护一份独立的文档。这一过程缓慢,而且文档常常因代码变更而过时。
FastAPI 建立在另一种理念之上:文档应当是代码本身的直接产物,而不是一项额外的工作。当你编写应用时,FastAPI 会自动生成一个实时的、可交互的文档页面。FastAPI 为此使用了一个叫做 Swagger UI 的工具。
Swagger UI 提供了三大优势:
对人类而言,它是一份可交互的蓝图: Swagger UI 会清晰地列出你的 API 中所有可用的端点,以及每个端点期望的输入参数和返回数据的结构。更重要的是,它内置了”Try it out(试一试)“功能。这让你无需编写任何客户端代码,就可以直接在浏览器中与你的 API 进行交互。你可以填写参数、执行请求,并立即看到真实的响应。这种亲手操作的体验,能让你对 API 的行为建立起具体而直观的感受,远比阅读静态文档来得更快。
对开发者而言,它是一个调试工具: 当你的应用没有按预期工作时,往往很难判断问题出在前端客户端还是后端服务器。Swagger UI 充当了一个可靠且标准化的客户端。如果你能在 Swagger UI 中成功调用 API,但你自己的客户端却失败了,就可以高度确信问题出在客户端代码中。这种隔离问题的能力非常宝贵,能极大加快调试速度。
对 AI 而言,它是一份机器可读的说明书: Swagger UI 背后是一个名为 openapi.json 的文件。这是一份结构化、机器可读的 JSON 文件,精确描述了你 API 的每一个细节。这就引出了我们将在整门课程中反复强调的一条关键原则:知识必须被外化为正式的、结构化的格式,AI 才能可靠地消费并据此行动。openapi.json 文件正是这一原则在现实中的完美应用。你可以直接把这个文件的 URL 提供给 AI 编程助手,它就能瞬间理解你整个 API,并据此正确地编写与之交互的代码。
当我们命令 AI 编写代码时,它最大的挑战在于会犯错。因此,高效协作的关键,是创建一个让 AI 能够尽快发现并自我纠正错误的环境。
FastAPI 在这方面表现出色,因为它让你能够强制执行严格的数据契约。可以把它想象成给助手一份非常精确的任务模板。如果你提供一份清晰的表单,其中字段明确指定”姓名必须是文本”、“年龄必须是数字”,助手在填写时就能立刻发现自己的错误。
FastAPI 通过 Python 内置的类型注解和一个名为 Pydantic 的库来实现这一点。例如,你可以定义一个传入请求必须包含字符串类型的姓名和整数类型的年龄。
这种严格的契约创造了一个紧密的反馈回路,对于 AI 驱动的开发而言堪称变革性的:
提早发现:当 AI 生成的代码尝试发送错误类型的数据(例如把年龄写成 “twenty” 而不是 20)时,错误往往会被类型检查器等开发工具立刻捕获,甚至在代码运行之前就被发现。
快速失败:即使错误进入了运行时,FastAPI 也会因数据不匹配而立刻拒绝该请求,并提供清晰、具体的错误信息,准确说明哪里出了问题。
这种”提早失败、快速失败”的机制,让 AI 能够获得即时、可执行的反馈。它可以读取错误信息、理解自己的错误并修正代码,往往无需任何人工干预。这极大地提升了 AI 辅助开发的速度与成功率。
从本质上讲,选择 FastAPI 是一个与 AI 时代构建原则相契合的战略决策。它表明:作为一名架构师,你最重要的工作不仅仅是写代码,更是选择那些能为 AI 协作创造最肥沃土壤的工具,并据此设计系统。
核心实践:命令 AI 搭建骨架
本模块的主要工具是 Cursor,一款 AI 优先的代码编辑器。我们不会自己手写样板代码,而是练习向 AI 伙伴下达清晰、精确指令的艺术。
这里我们的目标是构建一个 FastAPI Web 应用,它接受一个名字作为输入,并输出一条 “Hello, World ” 的消息。消息将以 JSON 格式返回,这是 FastAPI 所使用的标准语言。在继续阅读、了解我们建议的具体提示词之前,不妨先暂停一下,思考一下你会如何向 AI 表述这个提示。
然后我们再进入实际的提示词与步骤。
生成应用:在 Cursor 中打开你的项目文件夹。我们先从生成应用骨架开始。使用 Cursor 的聊天功能(Cmd/Ctrl+I),并提供以下提示:
Using FastAPI to create a minimal web application. It has an endpoint that returns a JSON object {“message”: “Hello, World ”}. Then launch the server in dev mode.
你可以使用自己偏好的模型,但 gpt-5-codex 或 Composer 1 都很适合这个任务。
Cursor 提供免费方案,但我们建议使用付费方案,因为不同 LLM 模型的智能水平差异巨大。或者,你也可以使用 Codex 或 Claude Code,它们可以与 ChatGPT 或 Claude 的订阅共享。
运行应用:代码生成后,下一步就是运行它。比起自己动手,更好的做法是让 AI 来做。这样,一旦代码崩溃,AI 会自动介入并帮助解决。
借助 AI 调试(如有必要):如果启动过程中遇到任何错误,这就是你第一次实践 AI 辅助调试的机会。把包含错误信息的终端输出悬停选中,点击”Add to chat”,然后简单地说:“fix it.” Cursor 能够读取你的代码和终端输出的上下文,从而给出针对性的解决方案。
用第一个交付物进行验证:应用运行起来后,打开浏览器并访问 http://127.0.0.1:8000/docs。你将看到 Swagger UI,这就是你的可交互文档。使用它来”Try it out”,并向你的根端点发起一次请求。
学习成果:你已经使用 AI 优先的工作流完成了第一次完整的”设计—实现—验证”闭环。你亲身体验到,一个具有战略意义的框架选择(FastAPI)如何通过其自文档化能力立即带来杠杆效应。