FastAPI入门:Python后端开发新手指南
开篇:认识FastAPI,它是做什么的?

你有没有想过,那些网页和APP背后的数据是怎么来的?比如你在淘宝上查看商品信息,在微信里发送消息,这些数据都是从服务器(也叫“后端”)发送给前端显示的。
FastAPI就是一个帮助我们快速搭建后端服务的工具。它使用Python语言编写,非常简单易懂,适合初学者入门,并且功能强大,适合做现代Web接口(也就是常说的REST API)开发。
它的核心优势有:
- 🚀 高性能:基于Starlette和Pydantic,速度非常快
- 🔐 自带文档:访问
/docs就能自动生成漂亮的接口文档 - ✨ 支持异步编程:处理大量请求更高效
- 👶 学习门槛低:Python语法基础就可以上手
如果你是一个完全没写过后端的新手,FastAPI是你最好的第一步!
环境准备:搭建你的第一个FastAPI环境

在开始写代码之前,我们需要准备好开发环境。不用担心,这一步只需要几分钟时间。
步骤1:安装Python
确保你已经安装了 Python 3.7 及以上版本。可以用命令行检查版本:
python --version
如果没有安装,请前往 https://www.python.org/downloads/ 下载并安装。
步骤2:安装FastAPI
打开命令行工具(Mac用Terminal,Windows用CMD或PowerShell),输入以下命令安装FastAPI及其依赖:
pip install fastapi uvicorn
fastapi是框架本身uvicorn是一个高性能的ASGI服务器,用来运行我们的应用
步骤3:验证是否安装成功
新建一个文件,比如叫做 main.py,然后写下最简单的FastAPI程序:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "欢迎来到FastAPI的世界!"}
保存之后,在命令行中执行启动命令:
uvicorn main:app --reload
main是文件名app是我们在代码中创建的 FastAPI 实例--reload表示在代码修改后自动重启服务器(方便调试)
现在打开浏览器,输入地址:
http://127.0.0.1:8000/
你会看到页面输出:
{
"message": "欢迎来到FastAPI的世界!"
}
同时还可以访问:
http://127.0.0.1:8000/docs
会自动出现Swagger UI的接口文档,看起来像这样:
- GET / → 显示欢迎语
🎉 恭喜你,你的第一个FastAPI服务器已经跑起来了!
核心概念:理解FastAPI的关键组件


学习任何技术都需要掌握几个基本概念,下面我们就来介绍几个你在项目中一定会遇到的核心知识点。
1. 路由(Route)
路由决定了当用户访问某个URL时,应该触发哪个函数。
示例:定义一个获取文章列表的接口
@app.get("/articles")
def list_articles():
return {"data": ["文章一", "文章二", "文章三"]}
当你访问 /articles,这个函数就会返回对应的列表。
小贴士:你可以把每一个
@app.get("/xxx")看作是“当有人访问这个路径时,就执行后面的函数”。
2. 请求方法(HTTP Methods)
常见的请求方法包括:
| 方法 | 含义 |
|---|---|
| GET | 获取资源(比如文章详情) |
| POST | 创建新资源(比如新增一篇文章) |
| PUT | 更新已有资源 |
| DELETE | 删除资源 |
示例:添加一个POST接口
@app.post("/create-article")
def create_article(title: str):
return {"status": "success", "title": title}
你可以通过浏览器访问 /docs 自动生成的接口测试表单来测试这个POST接口。
3. 参数传递(Path、Query、Body)
参数分为几种常见类型,我们来看例子:
路径参数(Path Parameters)
@app.get("/article/{article_id}")
def get_article(article_id: int):
return {"id": article_id, "title": f"文章{article_id}"}
- 访问
/article/5就会显示"文章5"
查询参数(Query Parameters)
@app.get("/search")
def search_article(q: str = None):
return {"query": q}
- 访问
/search?q=python会输出{"query": "python"}
请求体(Request Body)
用于POST等操作中传递复杂数据:
from pydantic import BaseModel
class ArticleCreate(BaseModel):
title: str
content: str
@app.post("/submit")
def submit_article(article: ArticleCreate):
return {"received": article}
4. 数据模型(Data Models)
FastAPI使用 BaseModel 来定义数据结构,方便进行类型验证和文档生成。
示例:
from fastapi import FastAPI
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
app = FastAPI()
@app.post("/user")
def create_user(user: User):
return {"user": user}
当你传入错误的数据类型时(比如年龄传了一个字符串),FastAPI会自动报错并提示你哪里出错了!
实战项目:做一个简单的“文章管理API”
下面我们来实战演练,构建一个可以管理文章的API接口,支持:
- 查看所有文章
- 创建新文章
- 根据ID查看某篇文章
第1步:初始化文件结构
创建一个新文件夹,比如叫做 blog_api,里面放一个 main.py 文件。
第2步:写代码
完整代码如下:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
app = FastAPI()
# 定义数据模型
class ArticleCreate(BaseModel):
title: str
content: str
class Article(ArticleCreate):
id: int
# 模拟数据库
articles = []
# 接口1:列出所有文章
@app.get("/articles", response_model=List[Article])
def list_articles():
return articles
# 接口2:创建一篇文章
@app.post("/articles", response_model=Article)
def create_article(article: ArticleCreate):
new_id = len(articles) + 1
new_article = Article(id=new_id, **article.model_dump())
articles.append(new_article)
return new_article
# 接口3:根据ID查看文章
@app.get("/articles/{article_id}", response_model=Article)
def get_article(article_id: int):
for article in articles:
if article.id == article_id:
return article
return {"error": "未找到该文章"}
注意:这里为了简化演示,没有真正连接数据库,而是用了内存中的一个列表来模拟数据库。
第3步:运行与测试
同样,运行命令:
uvicorn main:app --reload
打开浏览器进入 /docs,你可以看到三个API接口,分别是:
- GET /articles → 列出所有文章
- POST /articles → 提交文章标题与内容,创建新文章
- GET /articles/{article_id} → 输入ID查看具体文章
试着调用一下吧,看看是否能成功添加并查询文章。
常见问题解答(FAQ)
作为新手,你可能会遇到一些常见的小问题,下面是几个典型的情况和解决办法。
❓ 为什么访问 /docs 页面空白或出错?
- 确保你使用的是最新版FastAPI和Uvicorn
- 确保没有拼写错误(注意大小写)
- 检查Python环境中是否真的安装了FastAPI
❓ 为什么POST接口不接收参数?
- 确认你使用的请求方法是
POST而不是GET - 检查是否写了
request body的模型(即BaseModel) - 使用
/docs中的交互式表单测试是最直接的方式
❓ 如何调试FastAPI应用?
- 使用
print()打印变量或中间结果 - 使用
--reload参数让代码更改自动生效 - 在IDE中设置断点调试(推荐VS Code)
❓ FastAPI和Flask有什么区别?
| 对比项 | Flask | FastAPI |
|---|---|---|
| 性能 | 较慢(WSGI) | 更快(ASGI + 异步) |
| 文档 | 不自带 | 自带Swagger和ReDoc文档 |
| 类型检查 | 不强制 | 强制使用Pydantic进行类型验证 |
| 学习曲线 | 简单 | 同样简单,但更适合现代开发 |
总的来说:FastAPI更适合新时代API开发,尤其注重效率和自动化文档生成。
学习建议:下一步该怎么学?
你现在已经有了构建API的基本能力,接下来可以从以下几个方向继续提升:
✅ 推荐进阶学习路线:
学习使用真实数据库
- 推荐使用
SQLAlchemy或Tortoise ORM - 尝试连接 SQLite/MySQL/PostgreSQL
- 推荐使用
实现用户登录系统
- 添加认证机制(如JWT)
- 用户权限管理、token验证
部署上线
- 学习Docker打包项目
- 使用Nginx + Uvicorn部署到云服务器(如阿里云、腾讯云)
深入异步编程
- 掌握
async def和await - 学会并发请求处理技巧
- 掌握
前后端联调实践
- 尝试与React/Vue/Angular等前端框架结合
- 熟悉跨域请求(CORS)、JSON格式通信等实际问题
结语:继续前行,成为合格的后端开发者!
FastAPI是一个非常适合初学者的现代Web框架,它不仅让你快速上手构建后端API,还能为你打下坚实的编程基础。
记住一句话:
“写代码不要怕错,只要肯动手,每个错误都是进步的机会。”
如果你喜欢这篇文章,可以收藏并尝试跟着一步步实践。有任何疑问,欢迎留言提问,我会尽力帮你解答!
祝你在学习FastAPI的路上越走越远!🚀

评论 0