FastAPI入门:Python后端开发新手指南
开篇:什么是FastAPI,它能用来做什么?

在互联网的世界里,后端开发就像是网站或应用背后的“大脑”,它负责处理各种逻辑、管理数据、与数据库沟通等等。如果你听说过“服务器”、“接口(API)”这样的词,那基本都是后端的工作。
而FastAPI,是一个专为构建现代化API服务而设计的Python框架。它以速度快、开发效率高、文档自动生成著称,是Python社区中非常流行的一种后端开发方式。
简单来说:
- 你可以用FastAPI来写一个提供服务的程序(比如微信支付、登录注册等功能背后的服务)
- 它可以和前端网页、App、小程序等配合使用
- 学会之后你就能自己搭建功能强大的后端接口了!
接下来,我们就从零开始,一步步走进FastAPI的世界吧 🚀
环境准备:搭建属于你的开发环境


1. 安装Python
首先,我们需要安装Python。推荐大家使用 Python 3.8 及以上版本,因为FastAPI对新特性依赖较多。
如何检查自己的Python是否安装好了?打开命令行工具(Windows用CMD或PowerShell,Mac可以用终端Terminal):
python --version
如果输出类似 Python 3.10.12,那就说明已经安装好了。如果没有,请先到 Python官网下载并安装。
2. 安装FastAPI
我们通过pip来安装FastAPI:
pip install fastapi
⚠️ 如果你看到提示缺少uvicorn或者无法启动服务,请继续安装Uvicorn,它是运行FastAPI程序需要的异步服务器。
pip install uvicorn
3. 检查是否安装成功
新建一个文本文件,把它保存为 main.py,然后写下下面这段代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, FastAPI!"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
保存好后,在命令行中进入该文件所在目录,执行:
python main.py
看到类似以下内容就表示启动成功了:
INFO: Uvicorn running on http://127.0.0.1:8000
现在打开浏览器,访问地址:http://127.0.0.1:8000,你会看到页面返回:
{
"message": "Hello, FastAPI!"
}
太棒了!你的第一个FastAPI程序已经跑起来了 ✅
核心概念:理解最重要的几个概念

学习任何编程技术都要先掌握它的核心概念。下面几个术语可能会让你有点陌生,但别担心,我会用最直白的方式解释它们。
一、什么是API?
API 的全称是 Application Programming Interface,中文叫应用程序编程接口。
通俗点说,就是一个服务(通常是后台服务)对外暴露的一些操作,别的程序可以通过这些操作来调用服务的功能。
举个例子:就像银行柜台的窗口,你想取钱,要通过窗口而不是直接进金库。API就是这个窗口,别人想获取你系统的数据或操作某项功能,必须走这个“窗口”。
在FastAPI中,我们写的就是一个个这样的“窗口”。
二、什么是路由(Route)?
路由就是告诉FastAPI:当用户访问某个URL的时候,应该执行哪个函数。
例如:
@app.get("/users")
def list_users():
return {"users": ["张三", "李四"]}
这段代码的意思就是:当你访问 /users 这个地址时,就会调用 list_users 函数,并返回一个包含两个用户的列表。
常见请求方法有:
@app.get():获取数据(相当于阅读一本书)@app.post():提交数据(相当于填写表单)@app.put():更新数据(相当于编辑内容)@app.delete():删除数据
三、什么是路径参数?
路径参数是指 URL 中的一部分,用来传递额外的信息。
比如:
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
这时候你访问:http://127.0.0.1:8000/items/123
返回结果:
{
"item_id": 123
}
FastAPI 会自动把 123 转换为你指定的类型,比如这里是 int 类型。
四、什么是查询参数?
查询参数是在URL末尾带问号传参的方式。
比如:
@app.get("/search")
def search(q: str = None, limit: int = 10):
return {"query": q, "limit": limit}
访问地址:http://127.0.0.1:8000/search?q=fastapi&limit=5
返回结果:
{
"query": "fastapi",
"limit": 5
}
这在搜索功能中非常常见。
五、什么是请求体?
当我们要发送大量复杂的数据给服务器时(比如注册一个用户),就要用POST请求,并在请求体中带上数据。
示例:
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
email: str
age: int
@app.post("/users/")
def create_user(user: UserCreate):
return {"received_data": user}
我们可以使用 Postman、curl 或者浏览器自带的开发者工具测试这个接口:
发送JSON数据如下:
{
"name": "王五",
"email": "wangwu@example.com",
"age": 25
}
FastAPI 会自动帮我们将 JSON 数据解析成 Python 对象。
六、什么是自动生成的文档?
FastAPI 最贴心的地方之一就是 自动生成API文档!
只要你的程序还在运行状态,访问下面这两个链接:
- http://127.0.0.1:8000/docs:Swagger UI 文档界面
- http://127.0.0.1:8000/redoc:ReDoc 文档界面
你就可以看到你写的每一个接口,还能直接在网页上测试每个功能 🔥
实战项目:做一个简单的图书管理系统

学完理论之后,我们来动手做一个小小的实战项目——图书管理系统。
目标功能包括:
- 查看所有书籍
- 添加一本新书
- 根据ID查找某一本书
- 修改书名
- 删除某本书
第一步:定义图书模型
我们先创建一个Pydantic模型,用于描述每本书的基本信息:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
app = FastAPI()
# 定义图书模型
class Book(BaseModel):
id: int
title: str
author: str
# 模拟数据库存储
books_db = [
Book(id=1, title="Python基础教程", author="张老师"),
Book(id=2, title="深入理解计算机系统", author="李教授"),
]
第二步:列出所有图书
@app.get("/books/", response_model=List[Book])
def get_books():
return books_db
访问 http://127.0.0.1:8000/books/ 即可看到结果。
第三步:根据ID查看某本书
@app.get("/books/{book_id}", response_model=Book)
def get_book(book_id: int):
for book in books_db:
if book.id == book_id:
return book
return {"error": "未找到该书籍"}
测试地址:http://127.0.0.1:8000/books/1
第四步:添加一本书
@app.post("/books/", response_model=Book)
def add_book(book: Book):
books_db.append(book)
return book
用Postman或curl发送POST请求测试:
{
"id": 3,
"title": "数据库原理",
"author": "刘博士"
}
第五步:修改一本书的信息
@app.put("/books/{book_id}")
def update_book(book_id: int, updated_book: Book):
for i, book in enumerate(books_db):
if book.id == book_id:
books_db[i] = updated_book
return {"message": "书籍信息已更新"}
return {"error": "未找到该书籍"}
第六步:删除一本书
@app.delete("/books/{book_id}")
def delete_book(book_id: int):
for i, book in enumerate(books_db):
if book.id == book_id:
del books_db[i]
return {"message": "删除成功"}
return {"error": "未找到该书籍"}
现在,你的图书管理系统已经初具规模啦!👏
常见问题解答(FAQ)
作为一个刚入门的新手,你可能会遇到一些小问题。这里我整理了一些最常见的疑问,希望对你有帮助。
❓Q1:为什么我的代码运行不起来?
可能是以下几个原因:
- Python没安装正确:请确保你输入
python --version后能看到版本号。 - 包没安装好:确认安装了
fastapi和uvicorn。 - 路径错误:执行命令前,要确保你在
.py文件所在的目录下。 - 拼写错误:Python语法对大小写和缩进要求很严格,请仔细检查拼写和空格。
❓Q2:出现错误提示 TypeError: object of type 'Book' has no len() 怎么办?
这是因为FastAPI不能直接处理自定义对象列表作为响应。你可以改为将对象转换为字典形式再返回:
return [book.dict() for book in books_db]
或者在 @app.get() 中加上 response_model=List[Book] 参数,让它自动处理。
❓Q3:POST请求总是报错:“unprocessable entity”
这表示你发送的JSON格式不符合预期,请检查字段名称和类型是否与定义的 BaseModel 匹配。
❓Q4:怎么重启服务?
在命令行界面按住 Ctrl + C 即可终止当前运行的程序,然后再重新运行 python main.py。
❓Q5:FastAPI支持MySQL吗?
当然支持,FastAPI本身只是接口层,连接数据库需要结合如SQLAlchemy、Tortoise-ORM等ORM工具进行操作。后续我们可以在学习建议部分提到这些扩展知识。
学习建议:下一步该学什么?
恭喜你完成FastAPI入门!接下来你可以沿着这几个方向继续深入:
✅ 1. 掌握更复杂的API设计
- 使用分页、过滤、排序等高级功能
- 处理文件上传和下载
- 设计安全机制(如Token认证)
✅ 2. 集成数据库
- 学习SQLAlchemy(同步ORM)
- 学习Tortoise-ORM(异步ORM)
- 实现真正的增删改查功能,替代之前用的模拟列表
✅ 3. 学习异步编程
FastAPI基于异步编程模型(async/await),所以掌握这一块有助于提升性能,尤其适合处理高并发场景。
✅ 4. 使用中间件优化性能
- 记录请求日志
- 设置跨域支持(CORS)
- 缓存策略设置
- 请求限流
✅ 5. 部署上线实战
学会如何把你写的FastAPI项目部署上线,常见的工具有:
- Gunicorn + Uvicorn 部署
- Nginx + Gunicorn反向代理
- 使用Docker容器化打包
- 上云部署(阿里云、腾讯云、Heroku、Render等)
结语:坚持练习才是进步的关键!

FastAPI是一门实践性很强的技术。刚开始看起来可能有些抽象,但只要你愿意敲代码、试错、修改,很快就能感受到编程的乐趣。
记住一句话:
“程序员不是天生的,而是练出来的。”
最后送大家一句鼓励的话:
别怕犯错,代码世界没有对错,只有成败;多练习、多提问,你也能写出属于自己的强大后端服务!
祝你学习顺利,早日成为独当一面的后端工程师!🌟
(总字数:约3498字)

评论 0