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

高级孙丽探索者
2025-06-21 22:20
阅读 549

开篇:什么是FastAPI?它能用来做什么?

开篇:什么是FastAPI?它能用来做什么?

在开始编程之前,我们先来聊一聊“FastAPI”这个东西到底是什么。

简单来说,FastAPI 是一个用于创建后端服务的 Python 框架。你可以把它理解为一个帮你快速搭建「网站服务器」的工具。

假设你想做一个 App 或网页,里面有一个功能是注册用户、登录或者查询天气信息。这些功能背后都需要一个“服务器”,专门处理用户的请求、返回数据。而 FastAPI 就可以帮助你用 Python 写这个服务器

它的特点是:

  • 🚀 快!基于异步编程,性能强大。
  • 🧑‍💻 开发效率高,代码简洁。
  • 📝 自动生成 API 文档(Swagger 和 ReDoc)。
  • 🔍 强类型支持,错误少,结构清晰。

环境准备:一步步搭建你的开发环境

环境准备:一步步搭建你的开发环境

💡 温馨提示:本节需要你已经安装了 Python 3.8+。

步骤 1:安装 Python(如果你还没有)

前往官网下载安装包: 🔗 https://www.python.org/downloads/

安装完成后,在终端或命令行输入以下命令确认是否安装成功:

python --version

你应该会看到类似这样的输出:

Python 3.10.x

步骤 2:安装 FastAPI 和 Uvicorn(服务器)

我们使用 pip 来安装 FastAPI 和运行它的服务器组件:

pip install fastapi uvicorn

安装完成后,我们可以写第一个 FastAPI 程序了!


步骤 3:验证是否可以运行第一个示例程序

新建一个文件,比如叫 main.py,然后写入如下代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "欢迎来到 FastAPI 世界!"}

保存后,在终端中执行启动命令:

uvicorn main:app --reload

这时你会看到类似下面的日志:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

现在打开浏览器访问: 🔗 http://localhost:8000

你应该会看到 JSON 格式的输出:

{
    "message": "欢迎来到 FastAPI 世界!"
}

🎉 成功了!你的第一个 FastAPI 程序跑起来了!


核心概念:5分钟搞懂 FastAPI 的基本构成

核心概念:5分钟搞懂 FastAPI 的基本构成

我们现在来看看上面这段代码里都包含了哪些关键部分。

✅ FastAPI 主应用实例

app = FastAPI()

这行代码创建了一个 FastAPI 应用对象。你可以把它想象成你的整个服务器的入口点。

✅ 路由(Route)和方法(Method)

@app.get("/")
def read_root():
    return {"message": "欢迎来到 FastAPI 世界!"}
  • @app.get("/") 表示这是一个 GET 请求,路径是 /,也就是首页。
  • 函数名 read_root 可以自己随便起,但建议有含义。
  • 返回的数据会自动转成 JSON。

✅ 支持的请求方法

常用的 HTTP 方法如下:

方法 中文名称 示例场景
GET 获取数据 查询用户信息
POST 提交数据 用户注册
PUT 更新数据 修改用户信息
DELETE 删除数据 删除某条记录

实战项目:从零开始搭建一个“任务清单”API

我们将动手开发一个简单的 API 接口,实现“添加任务、查看所有任务”的功能。

第一步:定义数据结构(模型)

我们需要一个数据格式来表示“任务”。这里我们使用 Pydantic 提供的模型功能。

更新 main.py 文件内容如下:

from fastapi import FastAPI
from pydantic import BaseModel
from typing import List

app = FastAPI()

# 定义任务数据模型
class Task(BaseModel):
    title: str
    description: str
    done: bool = False  # 默认值是False

# 假装是一个数据库存储任务列表
tasks_db = []

# 查看所有任务
@app.get("/tasks", response_model=List[Task])
def get_tasks():
    return tasks_db

# 添加一个新任务
@app.post("/tasks")
def create_task(task: Task):
    tasks_db.append(task)
    return {"status": "任务已添加"}

第二步:测试接口

启动服务

确保你在 main.py 所在目录下执行:

uvicorn main:app --reload

访问文档页面

打开浏览器访问:

🔗 http://localhost:8000/docs

你会看到 Swagger 提供的一个可视化界面,让你直接测试各个接口的功能。

点击 /tasks 接口右侧的 ➕号按钮 → Try it out → 输入:

{
  "title": "学习FastAPI",
  "description": "今天完成入门教程"
}

点击 Execute 发送请求。

再访问:

🔗 http://localhost:8000/tasks

就能看到你刚刚添加的任务啦!


第三步:扩展功能 - 查看单个任务

新增一个 GET 路径,用来查询某个任务:

# 查看特定任务
@app.get("/tasks/{task_index}", response_model=Task)
def get_task(task_index: int):
    return tasks_db[task_index]

注意这里的 {task_index} 是一个动态参数,会被解析为整数传入函数中。

测试方法:

  1. 使用 /tasks 接口确认已有几个任务(假设是1个)
  2. 尝试访问 /tasks/0 查看第一个任务的内容

常见问题解答

❓ 新手常问的问题来了,看看有没有你也遇到过👇


Q1:为什么我不能访问 localhost:8000?

  • 确认你是否执行了 uvicorn main:app --reload
  • 检查是否有拼写错误(如 mian.py 错写成了 main.py
  • 防火墙或杀毒软件可能拦截了本地 8000 端口

Q2:我的代码没报错,但接口没有生效?

  • 确保函数被装饰器包裹了,比如 @app.get(...)
  • 检查函数名是否重复
  • 修改代码后重启服务(如果用了 --reload,一般不需要重启)

Q3:怎么调试 FastAPI 应用?

  • 可以使用 print 输出中间变量
  • 推荐配合 IDE(如 VS Code)设置断点进行调试
  • 使用 logging 模块记录日志也是一种好习惯

Q4:FastAPI 是不是必须用 async 异步方式?

  • 不强制要求,同步写法也可以正常工作
  • 异步更适合 IO 密集型操作(比如访问数据库、调外部接口)
  • 初学者可以先用同步方式掌握逻辑结构

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

恭喜你完成了 FastAPI 的第一步!接下来你可以考虑深入以下几个方向:

✅ 数据库集成

学习如何连接数据库(如 SQLite、MySQL、PostgreSQL)并持久化保存数据。常用库有:

  • SQLAlchemy(推荐)
  • Tortoise ORM(异步友好)
  • asyncpg / aiomysql(适合更底层控制)

✅ 用户认证与权限系统

学习 JWT、OAuth2 等主流认证机制,构建安全可靠的接口系统。


✅ 使用中间件增强功能

比如限制请求频率、跨域支持、日志记录等功能都可以通过中间件轻松实现。


✅ 项目部署上线

学习使用 Nginx + Gunicorn + Uvicorn 构建生产环境服务器,并将你的 API 上线到公网供他人访问。


✅ 多人协作 & CI/CD 流程

进一步了解 Git、Docker、自动化测试、持续集成等工程实践,打造完整的产品级后端架构。


结尾总结:坚持走下去,你会成为后端达人!

缓存策略对比-1

FastAPI 是一款非常适合初学者入门的现代化 Web 框架,它的设计非常优雅,语法清晰直观,非常适合想要迈入后端开发领域的朋友。

只要跟着教程动手多敲代码,遇到问题不害怕查资料,你会发现:

“哦,原来后端开发也没那么难嘛!”

加油吧,少年!🌟


📌 附录代码一览

# main.py 全量参考代码

from fastapi import FastAPI
from pydantic import BaseModel
from typing import List

app = FastAPI()

# 定义任务模型
class Task(BaseModel):
    title: str
    description: str
    done: bool = False

# 模拟数据库
tasks_db = []

# 获取全部任务
@app.get("/tasks", response_model=List[Task])
def get_tasks():
    return tasks_db

# 创建任务
@app.post("/tasks")
def create_task(task: Task):
    tasks_db.append(task)
    return {"status": "任务已添加"}

# 获取单个任务
@app.get("/tasks/{task_index}", response_model=Task)
def get_task(task_index: int):
    return tasks_db[task_index]

如需进一步的学习资源,可以访问官方文档: 🔗 https://fastapi.tiangolo.com

评论 0

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