FastAPI入门:Python后端开发新手指南

独立开发小站
2025-06-17 13:32
阅读 556

开篇:什么是FastAPI?

开篇:什么是FastAPI?

你有没有想过,网页上的“提交”按钮,点击之后数据是怎么处理的?为什么有些网站加载那么快?这背后都有一个叫“后端”的系统在工作。而我们今天要讲的 FastAPI,就是一个帮你快速搭建这个“后端”的工具。

简单来说:

  • FastAPI 是一个用 Python 写 Web 后端的框架。
  • 它特别适合用来做“接口(API)”。
  • 它速度快、功能强大,而且学习起来也很友好!

🎯 适合谁来学:

你不需要有任何编程经验,只要你会一点 Python 基础(比如变量、函数、字典),就可以开始跟着本教程一步步上手 FastAPI!


环境准备:你的第一个后端开发环境

环境准备:你的第一个后端开发环境

✅ 第一步:安装 Python

如果你还没装 Python,先去 官网 下载最新版本(建议 Python 3.9 以上)。安装时记得勾选「Add to PATH」。

验证是否安装成功:

python --version

或:

python3 --version

✅ 第二步:安装 FastAPI 和 Uvicorn

打开终端(Mac/Linux)或者 CMD/PowerShell(Windows),运行以下命令安装必需组件:

pip install fastapi uvicorn
  • fastapi:核心框架
  • uvicorn:用于启动服务的服务器

💡 小贴士:可以用虚拟环境(如 venvconda)来管理依赖,避免包冲突。

✅ 第三步:测试安装是否成功

新建一个文件:main.py,写入下面这段代码:

from fastapi import FastAPI

app = FastAPI()

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

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

然后在命令行中运行:

python main.py

看到类似输出说明运行成功:

INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

打开浏览器访问:

👉 http://localhost:8000

你将看到返回的 JSON 数据:

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

🎉 恭喜!你的第一个 FastAPI 接口跑起来了!


核心概念:理解几个关键词

核心概念:理解几个关键词

刚接触新东西总是会遇到一堆专业术语,别担心,我来用大白话解释给你听。

🧩 路由(Route)

就像现实生活中有“路”,电脑世界也有“路” —— 它们叫作“路由”。每个网址(URL)对应一个处理程序,比如 /hello 对应打招呼的功能,/add 可能是加法功能。

例子:

@app.get("/hello")
def say_hello():
    return {"data": "你好啊"}

当你访问 http://localhost:8000/hello 时,就会触发这个函数。

💡 请求方法(HTTP 方法)

常见的请求方法有:

方法 中文意思 用途
GET 获取信息 浏览页面、查数据等
POST 提交数据 表单提交、上传文件等
PUT 更新数据 修改已有信息
DELETE 删除数据 删掉某些内容

⚙️ 路径参数(Path Parameters)

如果你想让 URL 动态变化,比如根据 ID 查用户资料,你可以这样写:

@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"id": user_id, "name": f"User {user_id}"}

访问:http://localhost:8000/users/123
结果会是:

{
  "id": 123,
  "name": "User 123"
}

📥 查询参数(Query Parameters)

这是 URL 中带问号的部分,例如:

http://example.com/search?keyword=book&limit=5

你可以这样取值:

@app.get("/search")
def search(keyword: str, limit: int = 10):
    return {"keyword": keyword, "results_limit": limit}

即使你不传 limit,它也会默认为 10。

🗃️ 请求体(Request Body)

当你要传大量结构化数据(如注册用户信息)时,用 POST,并从 body 中读取。

from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

@app.post("/register")
def register_user(user: User):
    return {
        "received": user.dict()
    }

用 Postman 或 curl 发送如下 JSON:

{
  "name": "小明",
  "age": 25
}

你就能接收到这些数据啦!


实战项目:做一个简易的图书管理系统

实战项目:做一个简易的图书管理系统

接下来我们来实战一下,用 FastAPI 构建一个简单的图书管理系统。这个系统可以:

  • 展示所有书籍
  • 添加新书
  • 查看某本书详情(通过ID)

🛠️ 第一步:创建基础结构

新建文件夹,比如叫做 book_api,在里面建立两个文件:

book_api/
├── main.py
└── books.json

把一些初始图书数据写进 books.json,格式如下:

[
    {"id": 1, "title": "Python编程入门"},
    {"id": 2, "title": "Web开发基础"}
]

🔨 第二步:编写 main.py

from fastapi import FastAPI
from typing import List
from pydantic import BaseModel
import json

app = FastAPI()

# 模型类
class Book(BaseModel):
    id: int
    title: str

# 加载数据
def load_books():
    with open("books.json", "r", encoding="utf-8") as f:
        return json.load(f)

# 保存数据
def save_books(books):
    with open("books.json", "w", encoding="utf-8") as f:
        json.dump(books, f, ensure_ascii=False, indent=4)

# 获取所有书籍
@app.get("/books", response_model=List[Book])
def get_books():
    return load_books()

# 获取指定ID的书
@app.get("/books/{book_id}", response_model=Book)
def get_book(book_id: int):
    books = load_books()
    for book in books:
        if book["id"] == book_id:
            return book
    return {"error": "未找到该书"}


![数据流转过程-1](https://code-guide.oss.shanghai.autogptai.club/common/file/download?name=date2025061713/9bf00784-e5bb-40ed-b6f4-7b1eedbd2e2d.jpg)


# 添加一本书
@app.post("/books")
def add_book(book: Book):
    books = load_books()
    books.append(book.dict())
    save_books(books)
    return {"message": "书籍添加成功"}

▶️ 第三步:运行并测试接口

运行:

python main.py

访问:

缓存策略对比-2

{
  "id": 3,
  "title": "深入浅出数据库"
}

✅ 成功的话,books.json 文件里会出现这本书!


常见问题:初学者常问的问题解答

❓Q1:FastAPI 是不是必须搭配 Python?

是的,FastAPI 是基于 Python 的,所以你得先掌握基本的 Python 编程知识才能使用它。

❓Q2:FastAPI 和 Flask 有什么区别?

  • Flask 更轻量级,适合小型项目;
  • FastAPI 性能更好、支持异步编程,并且内置了自动文档生成,更适合现代 API 开发;
  • 如果你是初学者,推荐优先尝试 FastAPI,因为它的设计更现代化、体验更好。

❓Q3:为什么不能访问我的服务?

请检查:

  • 是否运行了服务?执行命令 python main.py
  • 浏览器地址是否正确?默认是 http://localhost:8000
  • 防火墙是否阻止?换台设备试试或者关掉防火墙。

❓Q4:POST 请求的数据怎么获取不到?

请确认你使用的是正确的 HTTP 客户端,如 Postman、curl 或者 Swagger UI 自带的调试工具发送请求,并确保数据格式是 JSON。

❓Q5:接口没有反应怎么办?

可能是函数没返回值,或者抛出了错误但没显示出来。你可以加上 print 日志、或者使用 try-except 来捕获异常。


学习建议:下一步怎么学?

继续进阶方向:

学什么 建议
异步支持 学 async def 函数,了解 await 的使用场景
数据库集成 连接 SQLite、PostgreSQL,使用 SQLAlchemy 或 Tortoise ORM
用户认证 JWT + OAuth2,实现登录功能
项目部署 学习 Docker 打包 FastAPI 应用,学会部署到云平台(如 Vercel、Railway)
单元测试 使用 pytest 测试接口逻辑和边界情况

📚 推荐资源:

  • 官方文档:https://fastapi.tiangolo.com
  • GitHub 示例项目:搜索 “fastapi sample project”
  • B站/YouTube 搜索 “FastAPI 入门”

🧠 温馨提醒:

不要一口气学太多理论,多写点代码,动起来才有感觉!


小结

在这篇《FastAPI 新手指南》中,我们从最基础的环境配置讲起,逐步讲解了核心概念,并完成了一个小项目 —— 图书管理系统。最后还解答了一些常见问题,并给出了学习路径建议。

只要你坚持动手练习,你也能很快成为一名合格的后端开发者!

📌 技术的学习从来不是一蹴而就的事,但每一步进步都离目标更近一点点。加油!


如有疑问欢迎留言,祝你编程之路顺利!

评论 0

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