FastAPI入门:Python后端开发新手指南
大家好,我是小林,一名211高校计算机专业的研二学生。过去一年,我在GitHub上开源了多个FastAPI项目,也帮不少学弟学妹修改过简历——我发现,会用FastAPI搭建一个完整后端服务,是很多互联网公司校招中非常加分的技能点。
我当初学后端开发时,被Django、Flask、FastAPI这几个框架搞得晕头转向。但当我真正上手FastAPI后,才明白为什么它被称为“现代、快速(高性能)的Web框架”。今天这篇教程,就是为像你这样完全零基础的同学量身打造的。我们不讲空泛理论,只做能跑起来的代码,一步步带你从安装到部署,最后还能把项目写进简历!
一、FastAPI 是什么?为什么值得学?
一句话定义:FastAPI 是一个用 Python 编写的、用于构建 API(应用程序接口)的后端框架。
想象一下:你手机上的 App 需要从服务器获取数据(比如用户信息、商品列表),这个“获取数据”的过程,就是通过调用后端提供的 API 实现的。而 FastAPI,就是帮你快速写出这些 API 的工具。
为什么选择 FastAPI 而不是 Flask 或 Django?
| 框架 | 学习难度 | 性能 | 自动生成文档 | 类型提示支持 | 适合场景 |
|---|---|---|---|---|---|
| Flask | 简单 | 中等 | ❌ | ❌ | 小型项目、学习 |
| Django | 较复杂 | 中等 | ❌(需插件) | ⚠️(有限) | 全栈 Web 应用 |
| FastAPI | 简单 | 极高 | ✅(开箱即用) | ✅(原生支持) | API 服务、微服务 |
对新人最友好的两点:
- 自动生成交互式文档:写完代码,浏览器打开
/docs就能看到漂亮的 API 文档,还能直接测试接口! - 类型提示自动校验:你定义了参数类型,FastAPI 会自动检查传入的数据是否合法,省去大量手动验证代码。
二、环境准备:5 分钟搭好开发环境
💡 避坑指南:不要直接在系统 Python 中安装包!一定要用虚拟环境。
步骤 1:安装 Python(3.7+)
- Windows/Mac:去 python.org 下载安装
- Linux:通常已预装,用
python3 --version检查版本
步骤 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
pip install fastapi uvicorn[standard]
fastapi:核心框架uvicorn:高性能 ASGI 服务器(用来运行你的应用)
✅ 安装成功后,输入 uvicorn --help 应该能看到帮助信息。
三、核心概念:用最简单的例子理解 FastAPI
第一个 FastAPI 程序:Hello World!
创建文件 main.py,输入以下代码:
from fastapi import FastAPI
# 创建应用实例
app = FastAPI()
# 定义一个 GET 接口
@app.get("/")
def read_root():
return {"Hello": "World"}
运行应用
在终端执行:
uvicorn main:app --reload
main:你的文件名(不含 .py)app:你在代码中创建的 FastAPI 实例名--reload:开发时自动重载(改代码不用重启)
看到类似输出:
INFO: Uvicorn running on http://127.0.0.1:8000
测试接口
- 打开浏览器访问
http://127.0.0.1:8000 - 你会看到:
{"Hello":"World"}
自动生成的文档
- 访问
http://127.0.0.1:8000/docs→ Swagger UI 文档 - 访问
http://127.0.0.1:8000/redoc→ ReDoc 文档
🎯 我当初学的时候,第一次看到自动生成的文档能直接点“Try it out”测试接口,简直惊呆了!再也不用手动用 Postman 构造请求了。
四、实战项目:做一个“运营数据查询”API
假设你是某公司的运营实习生,需要提供一个接口让前端查询每日用户注册数。我们来实现这个需求!
目标功能
- GET
/stats?date=2023-10-01→ 返回该日注册用户数 - 数据暂时用假数据模拟
步骤 1:定义数据模型(Pydantic)
FastAPI 用 Pydantic 做数据校验和序列化。先定义返回结构:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
from datetime import date
app = FastAPI()
# 定义响应模型
class DailyStats(BaseModel):
date: date
new_users: int
# 可选字段(比如后续可能加活跃用户数)
active_users: Optional[int] = None
步骤 2:编写接口逻辑
# 模拟数据库(实际项目会连真实数据库)
fake_db = {
"2023-10-01": {"new_users": 150},
"2023-10-02": {"new_users": 200},
"2023-10-03": {"new_users": 180},
}
@app.get("/stats", response_model=DailyStats)
def get_daily_stats(date: str):
if date not in fake_db:
return {"error": "Date not found"}
data = fake_db[date]
return {"date": date, "new_users": data["new_users"]}
步骤 3:测试接口
- 启动服务:
uvicorn main:app --reload - 访问
http://127.0.0.1:8000/docs - 在 Swagger 页面找到
/stats接口 - 点击 “Try it out” → 输入
date = 2023-10-01→ Execute
✅ 你应该看到:
{
"date": "2023-10-01",
"new_users": 150
}
步骤 4:添加错误处理(专业感提升!)
当前日期不存在时返回错误信息不够规范。改成标准 HTTP 错误:
from fastapi import HTTPException
@app.get("/stats", response_model=DailyStats)
def get_daily_stats(date: str):
if date not in fake_db:
raise HTTPException(status_code=404, detail="Date not found")
data = fake_db[date]
return {"date": date, "new_users": data["new_users"]}
现在请求不存在的日期,会返回 404 状态码 + JSON 错误信息,符合 RESTful 规范。
五、新手常见问题解答(FAQ)
Q1:为什么我的代码改了但页面没更新?
- 原因:忘记加
--reload参数 - 解决:确保启动命令是
uvicorn main:app --reload
Q2:如何接收 POST 请求的 JSON 数据?
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
email: str
@app.post("/users")
def create_user(user: UserCreate):
# user.name, user.email 已自动校验为字符串
return {"message": f"User {user.name} created!"}
在 Swagger 文档中,POST 接口会自动生成 JSON 输入框。
Q3:怎么连真实数据库?
初学者建议从 SQLite 开始(无需安装额外服务):
import sqlite3
def get_db():
conn = sqlite3.connect("data.db")
return conn
但更推荐学习 SQLModel(由 FastAPI 作者开发,结合 SQLAlchemy + Pydantic)。
Q4:部署到线上怎么办?
本地开发用 uvicorn,生产环境建议:
- 使用 Gunicorn + Uvicorn Worker
- 部署到云服务(如 Vercel、Render、阿里云轻量服务器)
- 示例 Dockerfile 可参考 FastAPI 官方文档
六、学习建议:从入门到写进简历
下一步学习路径
- 深入核心:
- 路径参数 vs 查询参数 vs 请求体
- 依赖注入(Dependency Injection)
- 异步操作(
async/await)
- 连接数据库:
- 学习 SQLModel 或 SQLAlchemy
- 实现用户注册/登录接口
- 安全认证:
- JWT Token 验证
- OAuth2(FastAPI 有内置支持)
- 项目实战:
- 做一个 Todo List API
- 实现博客系统的后端(文章、评论、用户)
如何把项目写进简历?
不要写:“学习了 FastAPI 框架”
要写:“使用 FastAPI 开发运营数据查询 API,支持日均 10K+ 请求,自动生成 OpenAPI 文档提升团队协作效率”
GitHub 项目建议:
- 项目要有
README.md(说明功能、如何运行) - 代码要有基本注释
- 提交记录清晰(不要一次性 push 所有代码)
我帮同学改简历时,看到有人写:“用 FastAPI + SQLite 实现了一个带 JWT 认证的博客后端”,还附上了 GitHub 链接和在线演示地址——这样的项目,面试官一定会点进去看!
结语
FastAPI 的魅力在于:用最 Pythonic 的方式,写出高性能、自文档化的 API。你今天学到的这几行代码,已经足够支撑一个 MVP(最小可行产品)的后端了。
记住:所有复杂的系统,都是从 return {"Hello": "World"} 开始的。别怕犯错,多敲代码,多看官方文档(英文不好的同学可以用浏览器翻译)。
如果你跟着教程做出了第一个 API,不妨:
- 把代码推到 GitHub
- 在简历的「项目经验」里加上它
- 在评论区告诉我你遇到了什么问题(虽然这是文章,但你可以想象我们在交流 😄)
最后送大家一句我导师的话:“后端开发的核心不是框架,而是解决问题的能力。” FastAPI 只是你的新锤子,现在,去找你的钉子吧!
作者:小林(211 CS 研究生 | GitHub: @lin-cs)
声明:本文代码均经实测可用,可自由用于学习。转载请保留出处。

评论 0