FastAPI 入门:Python 后端开发新手也能轻松上手
大家好,我是一名 211 高校计算机专业的在读研究生,平时喜欢写技术博客帮助刚入行的同学少走弯路。今天这篇教程的灵感,源于我当初学后端开发时踩过的坑——面对 Flask、Django、FastAPI 等框架,完全不知道该选哪个。尤其是看到别人用 FastAPI 写 API 又快又简洁,心里痒痒却无从下手。
如果你是零基础的小白,甚至还没写过一行后端代码,别担心!这篇文章将手把手带你用 Python 和 FastAPI 搭建你的第一个 Web API,并顺带聊聊它和区块链、GitHub 的关系(别急,后面会解释)。全程不用复杂术语,只讲你能马上用上的东西。
为什么选择 FastAPI?先看看主流 Python Web 框架对比
在开始写代码前,我们先搞清楚:FastAPI 到底是什么?和其他框架比有什么优势?
简单说,FastAPI 是一个用于构建 Web API 的现代 Python 框架。它主打“快”——既指运行速度快(基于 Starlette 和 Pydantic),也指开发速度快(自动生成文档、类型提示友好)。
下面是我整理的三大主流 Python Web 框架对比表,帮你快速决策:
| 特性 | Flask | Django | FastAPI |
|---|---|---|---|
| 学习曲线 | ⭐⭐(简单) | ⭐⭐⭐⭐(较陡) | ⭐⭐⭐(中等) |
| 自动生成 API 文档 | ❌(需插件) | ❌(需 DRF + Swagger) | ✅(内置 Swagger & ReDoc) |
| 类型提示支持 | ❌ | ❌ | ✅✅✅(核心特性) |
| 异步支持 | 有限(3.0+ 支持) | 有限(需 ASGI) | ✅(原生异步) |
| 适合场景 | 小型项目、原型 | 全栈应用、CMS | API 服务、微服务、AI 后端 |
| 性能 | 中等 | 中等 | ⚡️ 极高(接近 Go) |
💡 我的建议:如果你的目标是快速搭建一个 RESTful API(比如给前端提供数据接口、对接 AI 模型、甚至为区块链应用提供后端服务),FastAPI 是目前最值得学的选择。
环境准备:5 分钟搭好开发环境
第一步:安装 Python
确保你已安装 Python 3.7 或更高版本(推荐 3.9+)。打开终端输入:
python --version
# 或
python3 --version
如果没安装,请去 python.org 下载。
第二步:创建虚拟环境(强烈推荐!)
虚拟环境能隔离项目依赖,避免“我电脑上能跑,你电脑上不行”的尴尬。
# 创建名为 fastapi-env 的虚拟环境
python -m venv fastapi-env
# 激活虚拟环境(Windows)
fastapi-env\Scripts\activate
# 激活虚拟环境(Mac/Linux)
source fastapi-env/bin/activate
激活后,命令行前缀会变成 (fastapi-env),说明成功了!
第三步:安装 FastAPI 和 Uvicorn
Uvicorn 是一个高性能 ASGI 服务器,用来运行 FastAPI 应用。
pip install fastapi uvicorn[standard]
📌 小贴士:
uvicorn[standard]包含了生产环境需要的依赖(如 Gunicorn 兼容层),比只装uvicorn更完整。
核心概念:FastAPI 的三大支柱
FastAPI 之所以“快”,离不开三个核心设计:
1. 路径操作(Path Operations) = 路由 + HTTP 方法
每个 API 接口对应一个“路径操作”。例如:
from fastapi import FastAPI
app = FastAPI()
@app.get("/") # ← 这就是路径操作装饰器
def home():
return {"message": "Hello, 新手开发者!"}
@app.get("/")表示:当用户用 GET 方法 访问根路径/时,执行home()函数。- 你还可以用
@app.post(),@app.put(),@app.delete()等。
2. 自动类型校验(靠 Pydantic)
FastAPI 使用 Pydantic 模型自动校验请求数据。比如你想接收一个用户注册信息:
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
age: int
email: str
@app.post("/users/")
def create_user(user: UserCreate):
return {"status": "success", "user": user}
当你发送 POST 请求到 /users/ 时:
- 如果
age不是整数 → 自动返回 422 错误,告诉你“字段类型不对” - 不用手写 if 判断!类型安全由框架保证。
3. 自动生成交互式文档
启动应用后,访问:
http://localhost:8000/docs→ Swagger UI(可直接测试 API)http://localhost:8000/redoc→ ReDoc(更美观的文档)
这俩页面不需要你写一行 HTML,FastAPI 自动生成!
实战:5 分钟写出你的第一个 API
现在,我们来做一个超简单的“区块链资讯查询”模拟接口(别担心,不需要真懂区块链!)。
🤔 为什么提区块链?
因为很多区块链项目(如以太坊 DApp)的后端需要用 API 提供链上数据。FastAPI 正好适合这类轻量、高并发的场景。
步骤 1:创建 main.py
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
app = FastAPI(title="区块链资讯模拟 API")
# 模拟数据库(实际项目用 PostgreSQL/MongoDB)
fake_blockchain_data = [
{"id": 1, "name": "Bitcoin", "price_usd": 60000},
{"id": 2, "name": "Ethereum", "price_usd": 3000},
{"id": 3, "name": "Solana", "price_usd": 150},
]
class CryptoAsset(BaseModel):
id: int
name: str
price_usd: float
@app.get("/")
def read_root():
return {"message": "欢迎使用区块链资讯 API!"}
@app.get("/assets/", response_model=List[CryptoAsset])
def get_all_assets():
return fake_blockchain_data
@app.get("/assets/{asset_id}", response_model=CryptoAsset)
def get_asset(asset_id: int):
for asset in fake_blockchain_data:
if asset["id"] == asset_id:
return asset
return {"error": "未找到该资产"}
步骤 2:运行服务
在终端执行:
uvicorn main:app --reload
main:app表示:从main.py文件中导入app对象--reload表示:代码修改后自动重启(开发时超实用!)
你会看到类似输出:
INFO: Uvicorn running on http://127.0.0.1:8000
INFO: Started reloader process [xxxx]
步骤 3:测试 API
打开浏览器访问
http://localhost:8000/assets/
→ 返回所有加密货币列表(JSON 格式)访问
http://localhost:8000/docs
→ 点击/assets/{asset_id}→ Try it out → 输入1→ Execute
→ 看到 Bitcoin 数据!故意输错 ID(比如
999)→ 返回错误信息
✅ 恭喜!你已经完成了第一个 FastAPI 项目!
把代码上传到 GitHub(新手必做)
学会用 GitHub 管理代码是程序员的基本功。哪怕只是练习项目,也建议上传:
# 初始化 Git 仓库
git init
# 添加文件
git add main.py
# 提交
git commit -m "feat: first fastapi blockchain api"
# 在 GitHub 网站新建仓库(比如叫 fastapi-blockchain-demo)
# 然后关联远程仓库
git remote add origin https://github.com/你的用户名/fastapi-blockchain-demo.git
# 推送到 GitHub
git push -u origin main
以后每次改完代码,只需 git add . → git commit -m "描述" → git push 即可备份。
新手常见问题解答(FAQ)
Q1:为什么我的 uvicorn 命令找不到?
- 原因:没激活虚拟环境,或 pip 安装失败。
- 解决:确认
(fastapi-env)已激活,再运行pip list看是否有uvicorn。
Q2:如何接收 URL 参数以外的数据?比如 JSON Body?
- 答:用 Pydantic 模型即可,如前面的
UserCreate示例。FastAPI 会自动解析 JSON。
Q3:FastAPI 能连接数据库吗?
- 答:当然!常用组合:
- 关系型:SQLAlchemy + databases(异步)
- NoSQL:Motor(MongoDB 异步驱动)
- 教程推荐:官方文档的 SQL (Relational) Databases 章节。
Q4:这和区块链有什么关系?我是不是要学 Solidity?
- 答:不用!本例只是模拟区块链数据接口。实际中,你可以用 FastAPI:
- 调用区块链节点(如 Infura)获取数据
- 为钱包应用提供后端服务
- 构建 NFT 元数据服务器
- 核心思想:FastAPI 是后端工具,区块链是数据源之一。
下一步学习建议
你已经跨出了第一步!接下来可以:
深入 FastAPI 官方教程
https://fastapi.tiangolo.com/tutorial/(英文但有中文社区翻译)尝试加个数据库
从 SQLite 开始,用 SQLAlchemy ORM 存储数据。部署到云服务器
用uvicorn+nginx+gunicorn部署到阿里云/腾讯云(成本约 10 元/月)。结合真实区块链 API
比如用 CoinGecko API 替换我们的模拟数据:import httpx @app.get("/live-price/{coin_id}") async def get_live_price(coin_id: str): async with httpx.AsyncClient() as client: resp = await client.get(f"https://api.coingecko.com/api/v3/simple/price?ids={coin_id}&vs_currencies=usd") return resp.json()参与开源项目
在 GitHub 搜索fastapi blockchain,你会发现很多有趣项目(比如 Web3 钱包后端),fork 后学习代码结构。
最后的话
我当初学后端时,总觉得自己得先精通 Django 才敢碰 API 开发。后来发现,FastAPI 的设计哲学就是“让新手也能写出专业级代码”。类型提示帮你避坑,自动生成文档省去沟通成本,异步支持让你轻松应对高并发——这些都不是“高级功能”,而是现代开发的标配。
别被“区块链”“GitHub”这些词吓到。它们只是工具链的一环。你真正要掌握的,是用 Python 快速构建可靠后端的能力。而 FastAPI,正是通往这个目标的最佳起点之一。
现在,就去写你的 main.py 吧!遇到问题?欢迎在评论区留言(虽然这是篇博客,但我常看反馈 😄)。
祝你编码愉快,早日成为后端高手!

评论 0