Skip to main content

第1节:环境搭建,开发第一个FastAPI程序

既然你点开了这第一章,我猜你已经准备好从零开始,和我一起搭建出一个 FastAPI 项目了——每日电影推荐.

我们先来一睹这个项目的风采(当然如果你看不上的话,请不要告诉其他人😄)。

每日电影推荐是一个网站项目,主要页面效果如下: 首页

详情页

【核心功能】

  • 首页随机推荐一部电影
  • 详情页查看详细信息和观看电影

【技术栈】

解释器:Python 3.11及以上 后端: FastAPI 前端: Vue3 数据库:sqlite

别担心,我们不会一上来就讲深奥的概念——先跑出第一个 Hello World,看到它在浏览器里“活起来”,那一刻你就会对后面的学习更有信心。

FastAPI 简介:为什么是它?

FastAPI 是近年来非常热门的 Python Web 框架。 如果你之前接触过 Flask、Django,那么可以把 FastAPI 想象成:

速度更快、语法更现代、自动文档更强的 Flask。

那么,它究竟有什么吸引人的地方?

✅ 1. 快——真的很快

FastAPI 基于 Python 的异步特性(async/await),性能接近 Node.js 和 Go。 即使你暂时不理解“异步”,也完全没关系——但你会享受到性能带来的红利。

✅ 2. 自动生成 API 文档(Swagger UI)

只要写好接口,文档自动出现,不需要你额外做任何事。 这在团队协作、调试、对外发布 API 时非常省心。

✅ 3. 类型提示友好

它与 Python 的类型提示(type hint)深度结合。 写代码更清晰,也更容易让编辑器给你实时提示。

✅ 4. 学习曲线非常平滑

如果你会基本的 Python,你就能用 FastAPI 写接口、做项目。

这套《每日电影推荐》系列教程就是希望带你体验一件事:

后端开发不必复杂,从一个简单的接口,到最终每天自动推送推荐电影,你完全能一步步做出来。

接下来,我们就正式开始第一步: 让你的项目跑出第一个 Hello World

1. 安装与创建虚拟环境

在开始写代码之前,我们先把环境搭好。这一步很基础,但非常关键,就像搭建一间餐厅前,先把厨房准备好一样。

首先在你喜欢的路径下创建一个文件夹,命名为DailyMovie

注意:路径中不要包含中文,例如:“d:/电影/动作爱情/DailyMovie”, 养成好习惯,不要给自己挖坑。

用你的编辑器(我这里用的是vscode, 其他也可)打开这个文件,然后打开终端(Terminal ),创建一个名为.venv虚拟环境,命令如下:

python -m venv .venv

image-20251121133425859

执行完成后,会发现目录中新增一个.env文件夹。如下图所示。

image-20251121134718044

启动虚拟环境

根据系统不同,启动命令也略有区别:

Mac/Linux:

source .venv/bin/activate

Windows:

.venv\Scripts\activate

启动成功后,会在终端显示(.venv)表示,当前已经在虚拟环境中, 如下图所示。

image-20251121135616308

友情提示:

如果需要退出虚拟环境,输入: deactivate

在虚拟环境中安装 FastAPI 和 Uvicorn

接下来,在激活的 .venv 环境下,安装我们项目真正要用到的两个核心包:

pip install fastapi "uvicorn[standard]"

如下图所示。

image-20251121135856164

它们分别做什么?

  • fastapi:今天的主角,快速、高效、现代的 Web 框架。
  • uvicorn:负责让 FastAPI 跑起来的高速 ASGI 服务器。

注意

如果安装速度很慢,可以换国内镜像源,具体配置方式你可以参考我在《大熊课堂零基础入门动画课》里的讲解。

查看所有安装的包和版本,可以使用如下命令:

pip list

运行结果如下:

image-20251121140022691

小知识

因为FastAPI会依赖于一些第三方包,例如pydantic、click等,所以执行安装FastAPI命令时,会一起安装相关的包。

2. 你的第一段 FastAPI 代码 (main.py)

下面我们开始写项目里第一个能跑的文件。

在项目根目录 DailyMovie/ 下创建 main.py,内容如下:

from fastapi import FastAPI

app = FastAPI() # 创建FastAPI实例

@app.get("/")
def read_root():
return {"message": "Hello Movie", "status": "OK"}

这段代码非常短,但已经足够让你跑起来一个小 Web 服务。

简单解释一下:

  • app = FastAPI(): 就像创建一个餐厅实例。
  • @app.get("/"): 就像在门口挂个牌子,告诉客人们(浏览器),如果他们走正门(访问 /),就按下面的规矩招待。
  • return {...}: 我们返回的是 Python 字典,FastAPI 会非常贴心地自动把它变成 JSON 格式(Web 开发中最通用的数据格式)。

3. 启动服务器 🚀

在终端中,确保你位于 main.py 所在的文件夹,输入以下命令并回车:

uvicorn main:app --reload

如下图所示。

image-20251121140404492

命令拆解:

  • main: 指的是 main.py 文件。
  • app: 指的是 main.py 里面创建的那个 app = FastAPI() 对象。
  • --reload: 开启热重载模式。这是开发神器!当你修改代码并保存时,服务器会自动重启,不用手动关了再开。

4. 验证成果

方式一:直接访问

打开浏览器,访问:http://127.0.0.1:8000

你应该能看到屏幕上显示:

{"message": "Hello Movie", "status":"OK"}

如下图所示。

image-20251121140629380

小知识:

如果为了在谷歌浏览器中显示更好看的输出效果,如下图,可以安装谷歌浏览器插件:JSON-handle。

安装方式请搜索我之前的安装浏览器插件教程。

image-20251121140703137

方式二:查看交互式文档 (Swagger UI) ✨

这是 FastAPI 最强大的功能之一!

访问:http://127.0.0.1:8000/docs

你会看到一个自动生成的文档页面。

  1. 点击绿色的 GET / 按钮。
  2. 点击右侧的 Try it out
  3. 点击蓝色的 Execute
  4. 查看下方的 Response body,是不是看到了我们的 JSON 数据?

效果如下图。

image-20251121141304919

✅ 本节作业

  1. 成功运行上面的代码。
  2. 尝试修改 main.py 中的返回内容,比如改成 {"name": "大熊课堂Andy", "age": "18"}
  3. 保存文件,观察终端是否自动重载了。
  4. 刷新浏览器,看内容变了没。

完成这部分后,你已经正式迈出打造“每日电影推荐”服务的第一步啦! 下一章,我们开始搭建项目骨架,构建核心API,把服务做得更有结构感。


如果你喜欢这个教程的话,请帮忙“关注+点赞+转发”,在此谢过各位🙏