FastAPI 入门:Python 后端开发新手指南

技术达人Code
2025-06-24 11:44
阅读 391

一、开篇:什么是 FastAPI?它能做什么?

一、开篇:什么是 FastAPI?它能做什么?

在软件开发中,后端(Backend) 指的是负责处理用户请求、与数据库交互、执行业务逻辑的程序部分。而 FastAPI 是一个基于 Python 的现代 Web 框架,专门用来快速构建高性能的后端服务。

你可以把 FastAPI 想象成一辆“编程小车”,它可以帮你在网站背后运行代码,比如:

  • 提供天气信息
  • 接收用户注册信息并保存到数据库
  • 创建 RESTful API 接口供其他程序调用

FastAPI 使用 Python 3.6+ 的特性(特别是异步功能),使得构建 API 更加简单、高效。而且,它的文档自动化生成能力非常强,非常适合初学者入门!


二、环境准备:搭建你的第一个 FastAPI 开发环境

二、环境准备:搭建你的第一个 FastAPI 开发环境

为了开始使用 FastAPI,你需要安装一些必要的工具。别担心,每一步都很简单。

✅ 步骤 1:安装 Python

确保你的电脑已经安装了 Python。推荐使用 Python 3.8 或更高版本。

检查是否已安装 Python

在命令行输入:

python --version

如果看到类似 Python 3.10.x 的输出,说明你已经装好了 Python。

如果没有,请前往 https://www.python.org 下载并安装。


✅ 步骤 2:安装 FastAPI 和 Uvicorn

我们使用 pip 来安装 FastAPI 及其依赖。

打开终端或命令行,运行以下命令:

pip install fastapi uvicorn

解释一下:

  • fastapi:核心框架,用来定义接口
  • uvicorn:FastAPI 的运行服务器,用来启动和测试项目

✅ 步骤 3:创建项目文件夹

新建一个文件夹用于存放你的 FastAPI 项目,例如:

fastapi-project/
└── main.py

在这个文件夹里,你会写你的第一个 FastAPI 应用。


三、核心概念:FastAPI 中最基础的几个知识点

三、核心概念:FastAPI 中最基础的几个知识点

我们先来认识几个关键词,它们是你编写 FastAPI 程序的必备零件!

🔹 1. 导入 FastAPI 类

所有 FastAPI 应用都要从导入 FastAPI 类开始。

from fastapi import FastAPI

这句话的意思是:“我要使用 FastAPI 这个框架”。


🔹 2. 创建应用实例

接下来,我们要创建一个 FastAPI 对象,作为整个项目的入口点:

app = FastAPI()

你可以理解为“我创建了一个叫 app 的网页服务。”


🔹 3. 定义路由(Route)

路由就像是网站上的一个个“门牌号”,告诉计算机访问哪个地址会触发哪段代码。

我们使用装饰器语法 @app.get() 来定义一个 GET 请求的路径:

@app.get("/")
def read_root():
    return {"message": "欢迎来到我的第一个 FastAPI 服务!"}

这段代码表示:

  • 当有人访问根路径 / 时(也就是网址最后没有东西)
  • 执行 read_root() 函数
  • 返回一个 JSON 格式的欢迎消息

🔹 4. 运行服务器

我们使用 uvicorn 来运行这个应用:

uvicorn main:app --reload

解释一下:

  • main: 表示文件名是 main.py
  • app: 表示要运行的对象是 main.py 中的 app
  • --reload: 表示自动重新加载(当你修改代码后,服务器会自动重启)

访问 http://127.0.0.1:8000,你应该能看到如下结果:

{
  "message": "欢迎来到我的第一个 FastAPI 服务!"
}

🔹 5. 自动生成的交互式 API 文档

FastAPI 非常贴心地为你自动生成了 API 文档。

访问这两个网址看看发生了什么:

这两个页面可以帮助你调试接口,即使你是零基础也能轻松测试。


四、实战项目:动手做一个 “问候 API”

四、实战项目:动手做一个 “问候 API”

现在,我们来做个小项目:创建一个可以根据名字打招呼的 API。

目标功能:

  • 输入名字,返回 “你好, {name}!”
  • 示例:访问 /hello/小明 返回 { "message": "你好, 小明!" }

✅ 第一步:定义带路径参数的接口

编辑 main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/hello/{name}")
def say_hello(name: str):
    return {"message": f"你好, {name}!"}

在这段代码中:

  • {name} 是一个路径参数(Path Parameter)
  • FastAPI 自动将 URL 中的名字提取出来,并传递给函数中的 name 参数

✅ 第二步:运行服务

继续运行:

uvicorn main:app --reload

然后访问:http://127.0.0.1:8000/hello/小明

你应该看到如下结果:

{
  "message": "你好, 小明!"
}

✅ 第三步:添加一个查询参数(Query Parameter)

我们再扩展功能:允许用户提供一个问候语,例如 ?greeting=早上好,则显示 “早上好, 小明!”

修改代码如下:

@app.get("/hello/{name}")
def say_hello(name: str, greeting: str = "你好"):
    return {"message": f"{greeting}, {name}!"}
  • greeting: str = "你好" 表示这是一个可选的查询参数,默认值是“你好”
  • 使用方式:
    • 访问 /hello/小明?greeting=晚安 → 输出“晚安, 小明!”

尝试在浏览器或文档页中测试一下吧!


五、常见问题解答(FAQ)

很多同学第一次使用 FastAPI 都会遇到一些问题,下面是一些常见的坑及解决方法:


❓1. 报错:Error loading ASGI app,是怎么回事?

✅ 常见原因:

  • 文件名不是 main.py
  • 没有正确指定模块(如 uvicorn main:app 写成了别的)

✅ 解决办法: 检查命令是否为:

uvicorn main:app --reload

如果你改了文件名,比如叫 api.py,那就要改成:

uvicorn api:app --reload

❓2. 我写了代码,但访问不了,怎么确认有没有错误?

✅ 解决办法:

  • 查看控制台是否有报错信息(红色字体)
  • 如果没有任何报错但无法访问,可能是 IP 地址不对(例如在某些云主机上需要用公网 IP)

✅ 检查方式: 访问 localhost:8000127.0.0.1:8000


❓3. 为什么不能使用 POST 请求?

✅ 原因:你还没有学习 POST 方法的用法 😄

下节课我们就会讲 POST 请求的写法啦!


❓4. 怎样让别人访问我的本地 API?

✅ 初学阶段不建议开放公网访问,但如果一定要试:

  • 使用内网穿透工具(如 Ngrok)
  • 或者部署到免费平台(如 PythonAnywhere)

这部分内容我们会在后续进阶课程中讲解。


六、学习建议:下一步该学什么?

缓存策略对比-1

恭喜你完成了第一课!你现在已经是 FastAPI 的入门开发者了!

接下来你可以学习的方向包括:

🔹 学习更多 HTTP 方法

目前我们只用了 GET 请求,还可以学习:

  • POST:提交数据(例如注册表单)
  • PUT:更新数据
  • DELETE:删除数据

🔹 学习 Pydantic 模型(数据验证)

Pydantic 是 FastAPI 强大的武器之一,可以帮你验证输入数据的格式是否符合要求。

例如:判断用户名是否为空、邮箱是否合法等。

🔹 学习连接数据库(如 SQLite / MySQL / PostgreSQL)

通过数据库你可以保存用户的注册信息、商品数据等,实现真实的功能。

🔹 部署你的项目上线

学会如何把你的 FastAPI 项目发布到网络上,让别人能真正使用你的 API。


七、总结

本教程中,我们完成了:

  • 了解 FastAPI 是什么及其用途
  • 成功搭建开发环境并运行起第一个项目
  • 学习了 FastAPI 的基本结构:创建 app、定义路由、传参方式
  • 动手做了“带参数的问候 API”小项目
  • 解答了新手常见的若干问题
  • 给出了后续学习方向

希望这份《FastAPI 入门指南》能成为你踏上后端开发之路的第一步!

⭐️ 不要忘记多敲代码、多测试、多提问 —— 编程就是不断练习的过程!


附录:完整代码一览

# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "欢迎来到我的第一个 FastAPI 服务!"}

@app.get("/hello/{name}")
def say_hello(name: str, greeting: str = "你好"):
    return {"message": f"{greeting}, {name}!"}

记得运行服务的时候是:

uvicorn main:app --reload

祝你 Happy Coding 🎉

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝