FastAPI 教程:13步构建REST API [2026](2026-07-08)
为什么选择FastAPI?
2026年,FastAPI已成为构建高性能REST API的首选框架之一。它基于Python 3.10+,天生支持异步、自动生成OpenAPI文档,且速度直逼Node.js。根据2025年开发者调查,使用FastAPI的项目性能平均提升约40%,开发效率提高30%。
下面,我们通过13个清晰步骤,从零搭建一个生产级REST API。你将得到一个可立即运行的图书管理API(支持CRUD)。
第1~3步:环境与项目初始化
1. 安装FastAPI
pip install fastapi uvicorn
小贴士:建议在虚拟环境中安装,避免版本冲突。
2. 创建基础入口文件
新建main.py,写入:
from fastapi import FastAPI
app = FastAPI(title="图书管理系统")
@app.get("/")
async def root():
return {"message": "欢迎来到FastAPI图书库"}
3. 启动服务
uvicorn main:app --reload
打开浏览器访问 http://127.0.0.1:8000,你会看到JSON响应。访问 /docs 即可看到自动生成的交互式Swagger文档。
第4~8步:构建核心模型与路由
4. 定义数据模型(Pydantic)
from pydantic import BaseModel
class Book(BaseModel):
title: str
author: str
year: int
isbn: str
5. 创建内存数据库(模拟存储)
books_db: list[Book] = []
6. POST路由:添加图书
@app.post("/books/", response_model=Book)
async def add_book(book: Book):
books_db.append(book)
return book
示例:发送 {"title": "1984", "author": "Orwell", "year": 1949, "isbn": "978-0451524935"}
7. GET路由:获取所有图书
@app.get("/books/", response_model=list[Book])
async def get_books():
return books_db
8. GET by ID:通过ISBN查找
@app.get("/books/{isbn}", response_model=Book)
async def get_book(isbn: str):
for book in books_db:
if book.isbn == isbn:
return book
return {"error": "图书未找到"}
第9~11步:高级功能与优化
9. 添加PUT路由:更新图书
@app.put("/books/{isbn}")
async def update_book(isbn: str, updated: Book):
for i, book in enumerate(books_db):
if book.isbn == isbn:
books_db[i] = updated
return updated
return {"error": "未找到该ISBN"}
10. 添加DELETE路由
@app.delete("/books/{isbn}")
async def delete_book(isbn: str):
global books_db
books_db = [b for b in books_db if b.isbn != isbn]
return {"message": f"已删除ISBN: {isbn}"}
11. 异常处理与状态码
from fastapi import HTTPException
@app.get("/books/{isbn}")
async def get_book(isbn: str):
for book in books_db:
if book.isbn == isbn:
return book
raise HTTPException(status_code=404, detail="图书不存在")
实用建议:始终为失败情况返回合适的状态码(如404、400、422),便于客户端调试。
第12~13步:生产部署与测试
12. 准备生产环境
- 使用 Gunicorn + Uvicorn Worker:
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app - 添加
CORS中间件(允许前端跨域):from fastapi.middleware.cors import CORSMiddleware app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_methods=["*"])
13. 编写自动化测试(pytest)
from fastapi.testclient import TestClient
from main import app
def test_add_book():
client = TestClient(app)
response = client.post("/books/", json={"title":"测试","author":"Tester","year":2026,"isbn":"123"})
assert response.status_code == 200
assert response.json()["isbn"] == "123"
使用 pytest 运行:pytest test_main.py
数据对比(性能参考)
| 框架 | 请求/秒(单核) | 内存占用 | 启动时间 |
|---|---|---|---|
| FastAPI | 15,000 | 35MB | 0.3s |
| Flask | 8,000 | 28MB | 0.5s |
| Node.js (Express) | 20,000 | 40MB | 1.0s |
数据来源:2026年TechBench性能测试(模拟10万并发请求)
你的下一步行动
现在你已掌握FastAPI构建REST API的全部核心步骤。不要只是阅读——立即打开终端,跟着“第1步”运行代码。然后尝试:
- 添加一个“分类”字段,并实现按分类过滤的GET端点
- 用Postman测试所有路由
- 将项目部署到免费的Render或Railway平台
开始行动吧! 你的第一个FastAPI API距离上线只有13步。
免责声明:本文档内容仅供技术学习与参考。文中涉及的代码示例、性能数据及第三方服务(如Gunicorn、Render等)均基于2026年常见环境与公开资料,实际表现可能因操作系统、Python版本、硬件配置等因素存在差异。作者不对任何因使用本文内容导致的直接或间接损失承担责任。生产环境中请务必进行充分测试并考虑安全性(如输入验证、认证机制)。