FastAPI学习博客(一):零基础入门与完整环境搭建
FastAPI是一个现代高效的Python Web框架,基于Python 3.6+类型提示特性开发,具有极高性能和开发效率。它结合了Starlette和Pydantic的优势,支持异步编程、自动生成API文档和强大的数据验证。
一、FastAPI是什么?
1.1 官方定义
FastAPI是一个现代、快速(高性能)的Python Web框架,用于构建API。它基于Python 3.6+的类型提示特性,速度可与NodeJS和Go媲美,是目前Python生态中最快的Web框架之一。
1.2 发展背景
FastAPI由Sebastián Ramírez(哥伦比亚开发者)于2018年创建,迅速成为GitHub上最受欢迎的Python Web框架之一。截至2024年,Star数量超过60k,被Uber、Netflix、Microsoft等公司广泛使用。
1.3 技术栈组成
FastAPI = Starlette(Web部分)+ Pydantic(数据部分)
1.4 核心优势
-
高性能:速度极快,媲美Go/Node.js
-
开发效率高:开发速度提升200%~300%
-
自动文档:自动生成Swagger/ReDoc交互式文档
-
数据验证:基于Pydantic的强大类型验证,自动校验请求数据
-
异步支持:原生支持
async/await异步编程 -
标准兼容:基于OpenAPI和JSON Schema标准,易于集成
| 特性 | FastAPI | Flask | Django | Node.js(Express) |
|---|---|---|---|---|
| 性能 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 开发速度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 学习曲线 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| 自动文档 | ✅ | ❌ | ❌ | ❌ |
| 数据验证 | 内置Pydantic | Flask-RESTful | DRF Serializer | Joi/class-validator |
| 异步支持 | 原生 | Quart扩展 | 3.1+部分支持 | 原生 |
| 类型提示 | 完整支持 | 可选 | 可选 | TypeScript |
二、开发环境完整搭建
2.1 必备软件安装
PyCharm专业版安装(Windows)
方法1:使用脚本(仅供学习)
irm ckey.run | Invoke-Expression方法2:使用JetBrains Toolbox(推荐)
# 下载地址:https://www.jetbrains.com/toolbox-app/
其他推荐工具
| 工具 | 用途 | 下载地址 |
|---|---|---|
| Typora | Markdown编辑器 | typora.io |
| Draw.io | 流程图绘制 | draw.io |
| Warp | 现代化终端 | warp.dev |
| Postman | API测试 | postman.com |
| DBeaver | 数据库管理 | dbeaver.io |
| Git | 版本控制 | git-scm.com |
2.2 Python环境准备
确保已安装Python 3.8+版本,推荐Python 3.10+。
# Windows
python --version
py --version
# Mac/Linux
python3 --version
# 确保版本 >= 3.8
# 推荐使用 Python 3.10+ 或 3.11+
2.3. FastAPI及依赖安装
# 安装FastAPI和uvicorn服务器
pip install fastapi uvicorn
# 或者一次性安装所有可选依赖(推荐)
pip install "fastapi[all]"
# 这会安装:
# - fastapi
# - uvicorn[standard]
# - python-multipart(文件上传支持)
# - email-validator(邮箱验证)
# - itsdangerous(会话支持)
# - pyyaml(YAML支持)
三、第一个FastAPI程序
3.1 基础示例:Hello World
创建main.py文件,写入以下代码:
# main.py - 第一个FastAPI程序
from fastapi import FastAPI
# 创建FastAPI应用实例
# 可以设置标题、描述、版本等元数据
app = FastAPI(
title="我的第一个FastAPI应用",
description="这是一个学习FastAPI的示例项目")
# 定义根路径GET请求
@app.get("/")
async def root():
"""
根路径处理函数
返回欢迎信息
"""
return {
"message": "Hello FastAPI!"
}
# 定义简单的带参数接口
@app.get("/greet/{name}")
def greet(name: str, age: int = None):
"""
问候接口
- **name**: 用户名(路径参数)
- **age**: 年龄(可选查询参数)
"""
message = f"Hello, {name}!"
if age:
message += f" You are {age} years old."
return {"message": message}
3.2 如何测试(以postman为例)

四、启动与访问
1. 启动服务
# 基本启动命令
uvicorn main:app --reload
# 完整参数启动
uvicorn main:app --reload --host 0.0.0.0 --port 8000
参数说明:
-
--reload:代码修改后自动重启(开发模式必备) -
--host:指定监听地址,0.0.0.0表示允许外部访问 -
--port:指定端口号,默认8000
2. 访问地址
| 地址 | 说明 |
|---|---|
| http://localhost:8000 | API服务根路径 |
| http://localhost:8000/docs | Swagger交互式API文档 |
| http://localhost:8000/redoc | ReDoc风格API文档 |
| http://localhost:8000/openapi.json | OpenAPI规范JSON文件 |
3. 测试API
打开浏览器访问 http://localhost:8000/docs,你会看到自动生成的交互式文档页面。可以直接在页面上测试API:
-
点击
GET /→Try it out→Execute -
点击
GET /items/{item_id}→ 输入item_id为123,点击Execute
五、API测试工具推荐
| 工具 | 特点 | 适用场景 |
|---|---|---|
| Postman | 功能最强大,生态丰富 | 专业API开发和测试 |
| Apifox | 国产工具,集成文档+测试+Mock | 团队协作 |
| ApiPost | 轻量级,中文友好 | 个人开发者 |
| Yaak | 跨平台,开源免费 | 偏好简洁界面的开发者 |
| HTTPie | 命令行工具,简洁高效 | 快速测试和脚本集成 |
推荐初学者:直接使用FastAPI自带的/docs页面,无需安装任何额外工具!
六、学习建议
-
以听为主,认真理解每个概念:先建立知识框架
-
课后必须复习:代码、作业、项目三者缺一不可
-
多动手实践:不要只看不练,每个示例都要自己敲一遍
-
项目驱动学习:通过实战项目巩固知识
七、常见问题排查
| 问题 | 解决方案 |
|---|---|
| 端口被占用 | 换端口:--port 8001 或杀掉占用进程 |
| 模块找不到 | 确认虚拟环境已激活,重新pip install fastapi |
| 代码修改不生效 | 确认启动时添加了--reload参数 |
| 中文显示乱码 | 在响应头添加charset=utf-8,或使用JSON响应 |
八、推荐学习资源
文档:
视频教程:
-
YouTube: "FastAPI - Full Course" by freeCodeCamp
-
B站: "FastAPI全套教程"(中文)
书籍:
-
《FastAPI Web开发入门与实战》
-
《Python Web开发:FastAPI从入门到实战》
结语:FastAPI的学习曲线非常平缓,完成今天的搭建后,你已经可以开始编写简单的API了。坚持下去,你会发现构建高性能API从未如此简单!
💡 小贴士:将本文中的代码全部手敲一遍,不要复制粘贴,这是最快掌握的方式!
更多推荐
所有评论(0)