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

极客Web
2025-12-22 01:04
阅读 2640

大家好,我是你们的老朋友——一个在大厂干了三年后端开发、业余时间在B站分享技术的UP主。最近收到不少私信:“我想学后端开发,但Flask感觉太老,Django又太重,有没有轻量又现代的选择?”

我当初学的时候也纠结过这个问题。直到接触了 FastAPI ——它用起来像写脚本一样简单,性能却接近Go语言框架,还自带API文档!今天这篇教程,就是专门为零基础小白写的,哪怕你只写过“Hello World”,也能跟着做出自己的第一个后端接口。


为什么选 FastAPI?它和爬虫有什么关系?

先说结论:FastAPI 是一个用 Python 写 Web 接口(API)的框架。你可以把它理解成“接收请求、返回数据”的工具箱。

那它和爬虫有什么关系?
其实两者经常配合使用!比如:

  • 你写了个爬虫,抓取了天气数据;
  • 你想让手机App或网页能实时查看这些数据;
  • 这时候,你就需要一个后端接口(比如 GET /weather)来提供数据;
  • FastAPI 就是用来快速搭建这种接口的利器!

💡 小知识:爬虫负责“拿数据”,FastAPI 负责“给数据”。它们是前后端协作的好搭档!


第一步:环境准备(5分钟搞定)

别怕!我们只需要三样东西:

  1. Python 3.7+(建议 3.8 以上)
  2. pip(Python 自带)
  3. 代码编辑器(推荐 VS Code)

安装 FastAPI 和启动服务器

打开终端(Windows 用 PowerShell,Mac/Linux 用 Terminal),依次执行:

# 创建一个项目文件夹
mkdir my_fastapi_app
cd my_fastapi_app

# 安装 FastAPI 和 uvicorn(Web 服务器)
pip install fastapi uvicorn

✅ 验证安装成功:运行 python -c "import fastapi; print('OK')",如果没报错就说明装好了!


第二步:你的第一个 FastAPI 程序

新建一个文件 main.py,输入以下代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"message": "Hello, FastAPI 新手!"}

然后在终端运行:

uvicorn main:app --reload

看到类似这样的输出就成功了:

INFO:     Uvicorn running on http://127.0.0.1:8000

现在,打开浏览器访问 http://127.0.0.1:8000,你会看到:

{"message": "Hello, FastAPI 新手!"}

🎉 恭喜!你已经写出了第一个 API!


第三步:理解核心概念(用大白话解释)

1. @app.get("/") 是什么?

这是路由装饰器,意思是:

“当用户用 GET 方法访问根路径 / 时,就调用下面的 home() 函数”

你可以轻松添加更多接口:

@app.get("/about")
def about():
    return {"author": "你的名字", "lang": "Python"}

访问 /about 就能看到新内容!

2. 自动文档?真的假的!

FastAPI 最神奇的地方来了——它自动生成交互式 API 文档

访问这两个地址试试:

你不需要写一行文档代码,所有接口、参数、返回格式都自动展示出来,还能直接在页面上点“Try it out”测试接口!我当初第一次看到这个功能,惊呆了 😲


实战:做一个“模拟爬虫数据接口”

假设你写了个爬虫,每天抓取某网站的商品价格。现在你想通过 API 把最新价格暴露出去。

目标接口设计

  • 路径:/price/{item_id}
  • 方法:GET
  • 返回:商品ID、名称、当前价格

代码实现

修改 main.py

from fastapi import FastAPI

app = FastAPI()

# 模拟爬虫抓到的数据(实际中可能是数据库或文件)
fake_crawler_data = {
    "1001": {"name": "iPhone 15", "price": 5999},
    "1002": {"name": "MacBook Pro", "price": 12999},
    "1003": {"name": "AirPods", "price": 1299}
}

@app.get("/price/{item_id}")
def get_price(item_id: str):
    if item_id in fake_crawler_data:
        return {
            "item_id": item_id,
            "data": fake_crawler_data[item_id],
            "source": "simulated crawler"
        }
    else:
        return {"error": "Item not found"}

重启服务(如果之前开着,--reload 会自动重启),然后访问:

你会看到结构化的 JSON 数据!这就是你的“爬虫数据 API”。

🔍 提示:真实项目中,fake_crawler_data 可以换成从 CSV、数据库或 Redis 读取,甚至直接调用你的爬虫脚本!


常见问题 & 避坑指南

作为过来人,我总结了新手最容易踩的几个坑:

问题 原因 解决方案
访问 localhost:8000 打不开 服务没启动或端口被占 检查终端是否运行 uvicorn,换端口:--port 8080
修改代码没生效 没加 --reload 参数 启动命令必须带 --reload(仅开发环境用!)
中文显示乱码 浏览器编码问题 FastAPI 默认返回 UTF-8,一般没问题;若用 requests 调用,记得 .json()
路径参数写错 比如 {item_id} 写成 (item_id) 路径参数必须用花括号 {} 包裹

特别提醒:不要在生产环境用 --reload

--reload 是开发时自动重启用的,性能差且不安全。上线时要这样跑:

# 生产环境(无 reload)
uvicorn main:app --host 0.0.0.0 --port 80

学习路线建议(下一步怎么走?)

FastAPI 入门只是开始!我建议你按这个顺序深入:

  1. 学会处理请求参数

    • 查询参数(?page=1&size=10
    • 请求体(POST 的 JSON 数据)
    • 使用 Pydantic 定义数据模型(超重要!)
  2. 连接真实数据源

    • 读取 CSV/JSON 文件(模拟爬虫结果存储)
    • 连接 SQLite 或 PostgreSQL(用 SQLAlchemy 或 Tortoise ORM)
  3. 部署上线

    • 用 Docker 打包
    • 部署到云服务器(如阿里云轻量应用服务器)或 Vercel/Render
  4. 结合爬虫实战

    • 写一个定时爬虫(用 apscheduler
    • 把爬到的数据存入数据库
    • 用 FastAPI 提供查询接口

📌 我在 B站有系列视频《FastAPI + 爬虫实战》,从零教你怎么把爬虫数据变成可调用的 API,欢迎关注!


最后的话

FastAPI 的魅力在于:简单却不简陋,强大却不复杂。你不需要懂异步、不需要配置中间件,几行代码就能跑起一个高性能 API。对于想快速验证想法、做毕业设计、或者给爬虫加个“出口”的同学来说,它简直是天选之子。

记住:所有复杂的系统,都是从一个 return {"hello": "world"} 开始的

动手吧!你现在就可以关掉这篇文章,打开编辑器,敲下你的第一行 FastAPI 代码。遇到问题?评论区留言,我会一一解答!


作者:B站技术UP主 @后端小飞
专注 Python / FastAPI / 系统设计
教程持续更新中,点赞收藏不迷路!

评论 0

最热最新
暂无评论
极客WebLv.1
0
影响力
0
文章
0
粉丝