FastAPI入门:Python后端开发新手指南
作者:某大厂后端工程师 / 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,包含两个功能:
GET /books→ 返回所有书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 类属性名完全一致(区分大小写)!
七、学习建议:下一步怎么走?
你已经迈出了第一步!接下来可以:
- 学数据库:用 SQLAlchemy 或 TortoiseORM 连接 SQLite/MySQL
- 学认证:实现 JWT 登录、用户权限控制
- 部署上线:用 Docker + Nginx + Gunicorn 部署到云服务器
- 对比 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