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

Java老码农
2025-12-16 20:57
阅读 633

大家好,我是工作5年的后端开发工程师。这几年带过不少新人,也面试过上百位求职者。我发现很多想转行做后端开发的朋友,尤其是零基础的同学,常常卡在“不知道从哪开始”这一步。今天我就用最通俗的方式,手把手带你入门 FastAPI ——一个用 Python 写 Web 接口的现代框架。

为什么选 FastAPI?因为它上手快、文档清晰、性能强,而且现在很多公司(尤其是初创产品团队)都在用它快速搭建后端服务。无论你是想做出自己的小产品,还是准备求职面试,掌握 FastAPI 都是一个高性价比的选择。

我当初学的时候,花了好几天才搞明白“路由”“请求”“响应”这些词到底是什么意思。所以这篇文章,我会用案例驱动的方式,让你边写代码边理解概念,不讲空话。


一、FastAPI 是什么?能用来做什么?

简单说:FastAPI 是一个用 Python 编写的 Web 框架,专门用来开发 API(应用程序接口)

  • API 是什么?你可以把它想象成餐厅的“点菜单”。前端(比如手机 App 或网页)告诉后端“我要一份牛肉面”,后端就做好了回传数据。这个“点单 + 上菜”的过程,就是通过 API 完成的。
  • FastAPI 的优势
    • 自动生成功能强大的文档(访问 /docs 就能看到)
    • 支持异步编程(处理大量请求更快)
    • 类型提示友好(写代码时就能发现错误)
    • 学习曲线平缓,适合新手

关键词关联

  • 产品:你可以用 FastAPI 快速做出 MVP(最小可行产品)的后端,比如用户注册、文章发布等核心功能。
  • Python:整个框架基于 Python,语法简洁,社区资源丰富。
  • 求职:掌握 FastAPI 是很多初级后端岗位的加分项,尤其在中小厂或创业公司。

二、环境准备:5 分钟搭好开发环境

我们用最标准的方式安装,避免后续踩坑。

步骤 1:确保安装了 Python(3.7+)

打开终端(Mac/Linux)或命令提示符(Windows),输入:

python --version
# 或
python3 --version

如果显示 Python 3.7 及以上版本,就 OK。如果没有,请先去 python.org 下载安装。

步骤 2:创建虚拟环境(强烈推荐!)

虚拟环境可以隔离项目依赖,避免不同项目之间的包冲突。

# 创建名为 fastapi_env 的虚拟环境
python -m venv fastapi_env

# 激活虚拟环境
# Windows:
fastapi_env\Scripts\activate
# Mac/Linux:
source fastapi_env/bin/activate

激活后,命令行前面会出现 (fastapi_env),说明你已经在虚拟环境中了。

步骤 3:安装 FastAPI 和 Uvicorn

Uvicorn 是一个 ASGI 服务器,用来运行 FastAPI 应用。

pip install fastapi uvicorn[standard]

💡 避坑提示:一定要加 [standard],否则静态文件和 WebSocket 支持会缺失!

验证安装

新建一个文件 main.py,写入以下代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"message": "Hello, FastAPI!"}

然后在终端运行:

uvicorn main:app --reload
  • main 是文件名(main.py
  • app 是代码中创建的 FastAPI 实例
  • --reload 表示代码修改后自动重启(开发时超有用!)

看到类似输出就成功了:

INFO:     Uvicorn running on http://127.0.0.1:8000

打开浏览器访问 http://127.0.0.1:8000,你会看到:

{"message": "Hello, FastAPI!"}

再访问 http://127.0.0.1:8000/docs,哇!自动生成的交互式文档出现了!


三、核心概念:用最简单的语言讲清楚

1. 路由(Route)

路由就是 URL 路径。比如 /users/posts/1

在 FastAPI 中,用装饰器 @app.get()@app.post() 等来定义。

@app.get("/hello")
def say_hello():
    return {"greeting": "Hi there!"}

访问 /hello 就会触发 say_hello 函数。

2. 请求方法(HTTP Methods)

方法 用途 FastAPI 装饰器
GET 获取数据 @app.get()
POST 创建数据 @app.post()
PUT 更新数据 @app.put()
DELETE 删除数据 @app.delete()

3. 路径参数 vs 查询参数

  • 路径参数:写在 URL 路径里,比如 /users/123 中的 123
  • 查询参数:写在 ? 后面,比如 /search?q=python

代码示例

# 路径参数
@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}

# 查询参数
@app.get("/search")
def search(q: str = None):
    return {"query": q}

访问:

  • /items/42 → 返回 {"item_id": 42}
  • /search?q=fastapi → 返回 {"query": "fastapi"}

⚠️ 注意:FastAPI 会自动校验类型!如果你传 /items/abc,它会直接返回错误,告诉你“必须是整数”。

4. 请求体(Request Body)

当你要发送复杂数据(比如用户注册信息),通常用 JSON 格式放在请求体中。

FastAPI 用 Pydantic 模型来定义数据结构:

from pydantic import BaseModel

class UserCreate(BaseModel):
    name: str
    email: str
    age: int

@app.post("/users")
def create_user(user: UserCreate):
    return {"message": f"User {user.name} created!"}

现在,你可以用工具(比如 Postman 或文档页面的 Try it out)发送 POST 请求:

{
  "name": "Alice",
  "email": "alice@example.com",
  "age": 28
}

FastAPI 会自动验证字段是否存在、类型是否正确!


四、实战项目:做一个简单的“待办事项(Todo)”API

我们要实现以下功能:

  • 查看所有任务
  • 添加新任务
  • 根据 ID 查看单个任务

第 1 步:定义数据模型

新建 main.py(覆盖之前的):

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

app = FastAPI()

# 模拟数据库(实际项目用数据库,这里简化)
todos = []

class TodoItem(BaseModel):
    id: int
    title: str
    completed: bool = False

第 2 步:实现接口

# 获取所有任务
@app.get("/todos", response_model=List[TodoItem])
def get_todos():
    return todos

# 创建新任务
@app.post("/todos", response_model=TodoItem)
def create_todo(todo: TodoItem):
    todos.append(todo)
    return todo

# 获取单个任务
@app.get("/todos/{todo_id}", response_model=TodoItem)
def get_todo(todo_id: int):
    for todo in todos:
        if todo.id == todo_id:
            return todo
    return {"error": "Not found"}

第 3 步:运行并测试

uvicorn main:app --reload

打开 http://127.0.0.1:8000/docs,你会看到三个接口。

点击 POST /todos → Try it out → 输入:

{
  "id": 1,
  "title": "学习 FastAPI",
  "completed": false
}

点击 Execute,返回成功!

再点 GET /todos,就能看到刚添加的任务。

这就是一个最简产品原型!虽然数据存在内存里(重启就没了),但逻辑完整,足以展示你的能力。


五、新手常见问题解答(FAQ)

Q1:为什么我的代码改了没生效?

检查是否加了 --reload 参数。如果没有,每次改代码都要手动重启服务器。

Q2:路径参数和查询参数怎么选?

  • 如果是资源的唯一标识(如用户ID、文章ID),用路径参数:/users/123
  • 如果是过滤、搜索、分页等可选条件,用查询参数:/users?role=admin&page=2

Q3:怎么连接真实数据库?

FastAPI 本身不包含数据库,但可以搭配 SQLAlchemy、Tortoise ORM 等。建议先掌握基础 API,再学数据库集成。

Q4:部署上线怎么办?

本地开发用 uvicorn,生产环境建议用:

  • Gunicorn + Uvicorn Worker
  • Docker 容器化
  • 部署到云平台(如 Vercel、Render、阿里云)

初期不必深究,先做出能跑的功能更重要。

Q5:FastAPI 和 Flask 有什么区别?

特性 FastAPI Flask
性能 更高(支持异步) 一般
自动文档 ✅ 内置 Swagger UI ❌ 需要额外插件
类型提示 原生支持 支持但非强制
学习难度 略高(需了解 Pydantic) 更简单

建议:如果你是新手且目标是做 API,直接学 FastAPI;如果想深入 Web 原理,可以先学 Flask。


六、学习建议:下一步怎么走?

1. 巩固基础

  • 多写几个小 API:用户管理、博客文章、天气查询
  • 尝试不同的 HTTP 方法和状态码(比如 404、422)

2. 加入数据库

  • 学习 SQLAlchemy + SQLite(轻量,无需安装)
  • 实现真正的增删改查(CRUD)

3. 学习认证与授权

  • OAuth2 实现登录
  • 生成 JWT Token 保护接口

4. 部署你的第一个产品

  • 用免费平台(如 Render)部署
  • 绑定域名,让朋友也能访问

5. 为求职做准备

  • 在 GitHub 上开源你的项目
  • 写 README 说明功能和技术栈
  • 面试时可以说:“我用 FastAPI 做了一个 Todo 应用,支持 RESTful API 和自动文档”

🌟 最后的话:我当初也是从一行 print("Hello World") 开始的。不要怕犯错,每一个 bug 都是你成长的阶梯。FastAPI 是你进入后端世界的绝佳入口,坚持下去,你很快就能做出属于自己的产品,甚至拿到心仪 offer!


动手时间到了!现在就打开编辑器,敲下第一行 FastAPI 代码吧。你离“后端开发者”只差一个 uvicorn 命令的距离。

评论 0

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