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

写代码的普通人
2025-12-18 17:08
阅读 212

作者:某大厂后端工程师 / B站技术UP主(3年经验)

大家好!我是你们的老朋友,一个在大厂写Java和Python混搭代码的后端开发。最近在B站收到很多私信:“想转后端,但Java太重了,有没有轻量又现代的Python框架?”、“听说FastAPI很火,能教教小白怎么上手吗?”

我当初学的时候也是从零开始——没人带、文档看不懂、连“路由”是啥都搞不清。今天这篇教程,就是专门为你写的:零基础、纯实践、一步步带你跑通第一个FastAPI服务。哪怕你连“后端”是干啥的都不清楚,也能跟着做出来!


一、FastAPI 是什么?能干啥?

简单说:FastAPI 是一个用 Python 写的现代化 Web 框架,用来快速开发高性能的后端 API(接口)。

  • :性能接近 Go 和 Node.js,比 Flask/Django 快很多
  • 自动文档:写完代码,自动生成漂亮的交互式 API 文档(Swagger + ReDoc)
  • 类型安全:用 Python 的类型注解(Type Hints),提前发现错误
  • 异步支持:原生支持 async/await,适合高并发场景

🎯 面试题小贴士
很多公司面试会问:“FastAPI 和 Flask 有什么区别?”
答案关键词:自动文档、类型校验、异步原生支持、性能更高
(别担心,后面你会亲手体验这些优势!)


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

💡 提示:以下步骤适用于 Windows / macOS / Linux

步骤1:安装 Python(3.7+)

确保你有 Python 3.7 或更高版本。打开终端(命令行),输入:

python --version
# 或
python3 --version

如果没安装,请去 https://www.python.org/downloads/ 下载。

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

虚拟环境能避免项目之间的依赖冲突。运行:

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

# 激活它
# Windows:
fastapi-env\Scripts\activate
# macOS/Linux:
source fastapi-env/bin/activate

激活后,命令行前缀会变成 (fastapi-env),说明成功了!

步骤3:安装 FastAPI 和 Uvicorn

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

pip install fastapi uvicorn[standard]

✅ 验证安装:

pip list | grep -E "fastapi|uvicorn"

如果看到版本号,就说明装好了!


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

1. 什么是“API”?

想象你点外卖:

  • 你(前端) → 点“下单”按钮
  • 外卖平台(后端) → 收到请求,处理订单,返回“下单成功”
  • 这个“下单”按钮背后调用的接口,就是 API

FastAPI 就是用来写这些接口的工具。

2. 路由(Route)

路由 = URL 路径 + HTTP 方法(GET/POST等)

比如:

  • GET /users → 获取用户列表
  • POST /login → 用户登录

3. 请求与响应

  • 请求(Request):客户端发来的数据(比如用户名密码)
  • 响应(Response):服务器返回的数据(比如“登录成功”或错误信息)

FastAPI 会自动把 Python 对象转成 JSON 返回!


四、实战项目:写一个“图书管理系统”API

我们来做一个超简单的图书管理 API,包含两个功能:

  1. GET /books → 返回所有书
  2. POST /books → 添加新书

第1步:创建 main.py

在项目文件夹里新建一个 main.py 文件,内容如下:

from fastapi import FastAPI

app = FastAPI()

# 模拟数据库(实际项目用数据库,这里先用列表)
books = [
    {"id": 1, "title": "《Python入门》", "author": "张三"},
    {"id": 2, "title": "《Java核心编程》", "author": "李四"}
]

# GET 接口:获取所有书
@app.get("/books")
def get_books():
    return books

# POST 接口:添加新书
@app.post("/books")
def add_book(title: str, author: str):
    new_id = max(book["id"] for book in books) + 1
    books.append({"id": new_id, "title": title, "author": author})
    return {"message": "添加成功", "book_id": new_id}

第2步:运行服务

在终端执行:

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

你会看到类似输出:

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

第3步:测试 API

测试 GET 请求

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

你会看到 JSON 格式的图书列表!

测试 POST 请求

FastAPI 自动给你生成了 交互式文档
访问:http://127.0.0.1:8000/docs

你会看到一个超酷的 Swagger 页面:

  • 点击 /books 下的 POST
  • 点击 “Try it out”
  • 填入 title=《FastAPI实战》, author=王五
  • 点击 “Execute”

你会看到返回结果:{"message": "添加成功", "book_id": 3}

这就是 FastAPI 的魔法:不用写一行文档代码,自动给你生成可调试的 API 页面!


五、进阶一点:用 Pydantic 定义数据模型(面试常考!)

上面的 POST 接口用的是简单参数(title: str),但真实项目中,我们会用 Pydantic 模型来定义数据结构。

修改 main.py

from fastapi import FastAPI
from pydantic import BaseModel  # ← 新增导入

app = FastAPI()

# 定义“书”的数据模型
class BookCreate(BaseModel):
    title: str
    author: str

books = [
    {"id": 1, "title": "《Python入门》", "author": "张三"},
    {"id": 2, "title": "《Java核心编程》", "author": "李四"}
]

@app.get("/books")
def get_books():
    return books

# 使用 BookCreate 模型接收 JSON 数据
@app.post("/books")
def add_book(book: BookCreate):  # ← 参数类型变了!
    new_id = max(book["id"] for book in books) + 1
    new_book = {"id": new_id, "title": book.title, "author": book.author}
    books.append(new_book)
    return {"message": "添加成功", "book": new_book}

现在 POST 请求必须发送 JSON 格式的数据,比如:

{
  "title": "《深入理解Java虚拟机》",
  "author": "周志明"
}

🔍 为什么重要?

  • 自动校验数据类型(比如 author 必须是字符串)
  • 自动生成更准确的 API 文档
  • 面试题高频考点:FastAPI 如何做参数校验?答:Pydantic!

六、常见问题 & 避坑指南

问题 原因 解决方案
ModuleNotFoundError: No module named 'fastapi' 没激活虚拟环境 运行 source fastapi-env/bin/activate(macOS/Linux)或对应 Windows 命令
访问 http://localhost:8000 显示空白 没有根路径 / 的路由 添加 @app.get("/") 路由,或直接访问 /docs
POST 请求报错 “422 Unprocessable Entity” JSON 格式不对或缺少字段 检查是否按 Pydantic 模型传参,字段名是否正确
修改代码后没生效 忘记加 --reload 运行时加上 uvicorn main:app --reload

💬 我当初踩过的坑
第一次用 Pydantic,我把字段写成 Title(大写 T),结果一直报错。记住:JSON 字段名要和 Pydantic 类属性名完全一致(区分大小写)!


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

你已经迈出了第一步!接下来可以:

  1. 学数据库:用 SQLAlchemy 或 TortoiseORM 连接 SQLite/MySQL
  2. 学认证:实现 JWT 登录、用户权限控制
  3. 部署上线:用 Docker + Nginx + Gunicorn 部署到云服务器
  4. 对比 Java:如果你有 Java 背景,可以对比 Spring Boot:
    • FastAPI ≈ Spring Boot + Spring Web + Spring Validation + Swagger
    • 但 Python 更简洁,开发速度更快!

📌 给 Java 转 Python 的朋友
不要试图用 Java 思维写 Python!Python 的哲学是“简单直接”。FastAPI 的魅力就在于:用最少的代码,做最多的事


结语

恭喜你!你已经完成了第一个 FastAPI 项目,并亲手体验了自动文档、类型校验、路由定义等核心功能。

记住:所有高手,都是从 Hello World 开始的
我在 B站更新更多实战教程(搜“你的UP主名字”),下期我们讲《用 FastAPI + MySQL 做用户注册登录》!

有问题欢迎评论区留言,我会一一解答。
动手写代码,才是学会的唯一方式 —— 现在就去敲一遍吧!

🚀 附:常用命令速查表

命令 作用
python -m venv env 创建虚拟环境
source env/bin/activate 激活虚拟环境(macOS/Linux)
env\Scripts\activate 激活虚拟环境(Windows)
pip install fastapi uvicorn[standard] 安装依赖
uvicorn main:app --reload 启动开发服务器
http://127.0.0.1:8000/docs 查看自动生成的 API 文档

评论 0

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