FastAPI 入门:Python 后端开发新手也能轻松上手

林智
2026-01-05 06:23
阅读 327

大家好,我是一名 211 高校计算机专业的在读研究生,平时喜欢写技术博客帮助刚入行的同学少走弯路。今天这篇教程的灵感,源于我当初学后端开发时踩过的坑——面对 Flask、Django、FastAPI 等框架,完全不知道该选哪个。尤其是看到别人用 FastAPI 写 API 又快又简洁,心里痒痒却无从下手。

如果你是零基础的小白,甚至还没写过一行后端代码,别担心!这篇文章将手把手带你用 PythonFastAPI 搭建你的第一个 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

  1. 打开浏览器访问 http://localhost:8000/assets/
    → 返回所有加密货币列表(JSON 格式)

  2. 访问 http://localhost:8000/docs
    → 点击 /assets/{asset_id} → Try it out → 输入 1 → Execute
    → 看到 Bitcoin 数据!

  3. 故意输错 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 是后端工具,区块链是数据源之一。

下一步学习建议

你已经跨出了第一步!接下来可以:

  1. 深入 FastAPI 官方教程
    https://fastapi.tiangolo.com/tutorial/(英文但有中文社区翻译)

  2. 尝试加个数据库
    从 SQLite 开始,用 SQLAlchemy ORM 存储数据。

  3. 部署到云服务器
    uvicorn + nginx + gunicorn 部署到阿里云/腾讯云(成本约 10 元/月)。

  4. 结合真实区块链 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()
    
  5. 参与开源项目
    在 GitHub 搜索 fastapi blockchain,你会发现很多有趣项目(比如 Web3 钱包后端),fork 后学习代码结构。


最后的话

我当初学后端时,总觉得自己得先精通 Django 才敢碰 API 开发。后来发现,FastAPI 的设计哲学就是“让新手也能写出专业级代码”。类型提示帮你避坑,自动生成文档省去沟通成本,异步支持让你轻松应对高并发——这些都不是“高级功能”,而是现代开发的标配

别被“区块链”“GitHub”这些词吓到。它们只是工具链的一环。你真正要掌握的,是用 Python 快速构建可靠后端的能力。而 FastAPI,正是通往这个目标的最佳起点之一。

现在,就去写你的 main.py 吧!遇到问题?欢迎在评论区留言(虽然这是篇博客,但我常看反馈 😄)。

祝你编码愉快,早日成为后端高手!

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝