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

AI产品手记
2025-06-17 13:06
阅读 531

开篇:FastAPI 是什么?能做什么?

开篇:FastAPI 是什么?能做什么?

你有没有想过,怎么用 Python 做一个网站的“后台”?比如,当你在某个手机 App 上提交一个订单时,数据是怎么被接收和处理的?这背后靠的就是后端程序

今天我们要介绍的工具叫做 FastAPI,它是一个基于 Python 的框架,专门用来快速搭建高性能的Web 后端服务
简单来说,你可以把它理解成一个“快递小哥”,负责把你写好的代码变成一个可以接收请求、处理数据、并返回结果的“接口”。

👉 举个例子:你想开发一个天气预报的小程序,前端输入城市名后,向后端发起请求,后端调用接口获取天气数据,再返回给前端显示出来。这个过程中的“后端服务”就可以用 FastAPI 来实现!

相比传统的 Web 框架(如 Flask),FastAPI 有几个显著优势:

  • 更快:异步支持,性能优秀
  • 自带文档:访问 /docs 路径就能看到自动生成的 API 接口文档(Swagger)
  • 类型安全:配合 Python 的类型注解,让代码更清晰也更可靠

那我们现在就来一步步上手吧!


环境准备:安装与配置

环境准备:安装与配置

在开始写代码之前,我们需要准备好编程环境。别担心,这一部分非常简单,跟着步骤操作就可以了。

✅ 第一步:安装 Python

确保你电脑上已经安装了 Python。可以在终端或者命令行输入:

python --version

如果输出类似 Python 3.8.5 或更高版本,说明已安装好了。如果没有,请先去 官网 下载安装。

📌 新手常见问题:
Windows 用户推荐使用带有 GUI 安装器的 Python 安装包,并记得勾选“Add to PATH”。


✅ 第二步:创建项目文件夹

新建一个项目文件夹,比如叫 fastapi-tutorial,进入该目录后,在终端执行以下命令安装 FastAPI 和运行所需的服务器 Uvicorn:

pip install fastapi uvicorn

✅ 第三步:编写第一个应用

新建一个 Python 文件,例如叫 main.py,然后写下如下代码:

from fastapi import FastAPI

app = FastAPI()

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

这就是我们第一个 FastAPI 应用!虽然看起来简单,但已经完成了一个最基本的 HTTP 接口。

接下来运行它:

uvicorn main:app --reload

参数解释:

  • main: 是你的 Python 文件名(不包括 .py
  • app: 是 FastAPI 实例的名字
  • --reload: 当代码变化时自动重启服务器,适用于开发阶段

启动后会看到这样的提示信息:

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

现在打开浏览器,访问 http://127.0.0.1:8000,你应该能看到如下 JSON 数据:

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

✅ 成功运行!恭喜你完成了 FastAPI 的第一次启动。


核心概念详解(初学者友好版)

刚才是“开胃菜”,现在我们来认识一些 FastAPI 的核心组件和术语,我会用尽可能通俗的语言来讲解。


🧭 1. FastAPI() 实例对象 —— 你整个项目的“总开关”

你每次写的 FastAPI 程序都从这里开始:

app = FastAPI()

你可以把 app 看作是整个 Web 服务的主控中枢,所有的路由和功能都会通过它注册进去。


🛣️ 2. 路由(Route)—— URL 地址和函数之间的绑定关系

路由决定当用户访问哪个地址时执行哪段代码。

@app.get("/hello")
def say_hello():
    return {"greeting": "Hi there!"}

这段代码的意思是:当用户访问 /hello 这个网址时,会触发 say_hello() 函数,返回一段问候语。

常见的 HTTP 方法包括:

方法 用途简述
GET 获取数据(比如查天气)
POST 提交数据(比如注册账号)
PUT 更新数据(比如修改密码)
DELETE 删除数据

💬 3. 请求参数(Query Parameters & Path Parameters)

有时候我们要根据用户提供的信息做出不同的反应。这时候就要用到请求参数了。

❖ 查询参数(Query Parameters)

URL 地址中 ?key=value 形式传递的数据。比如:

@app.get("/search")
def search(query: str):
    return {"results": f"Searching for {query}"}

访问 http://127.0.0.1:8000/search?query=cat,你会看到:

{"results": "Searching for cat"}

❖ 路径参数(Path Parameters)

将参数直接放在路径中。比如:

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

访问 http://127.0.0.1:8000/users/5,结果为:

{"id": 5, "name": "User5"}

🗃️ 4. 使用 Pydantic 进行数据验证(可选但建议掌握)

FastAPI 很强大的一点是它能够自动校验传进来的数据格式是否符合要求,比如必须是整数、字符串长度限制等等。

为此我们需要引入 BaseModel

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float

然后在接口中使用它:

@app.post("/items/")
def create_item(item: Item):
    return {"item_name": item.name, "price": item.price}

发送如下 JSON:

{
  "name": "Apple",
  "price": 3.99
}

FastAPI 会自动帮你检查是否满足字段和类型要求,否则返回错误提示,非常有用!


实战项目:做一个简单的待办事项接口

现在我们来做个小项目练手,目标是实现一个待办事项列表管理接口,包含添加、查看、删除功能。

📦 步骤一:创建基础结构

继续使用刚才的 main.py,先加上必要的模块导入:

from fastapi import FastAPI
from pydantic import BaseModel
from typing import List, Optional

定义任务模型:

class TodoItem(BaseModel):
    id: int
    title: str
    completed: bool = False  # 默认未完成

创建 FastAPI 实例和模拟数据库:

app = FastAPI()
todos = []

🔧 步骤二:添加新任务

@app.post("/todos/")
def add_todo(todo: TodoItem):
    todos.append(todo)
    return {"status": "Todo added", "todo": todo}

访问接口 /todos/ 并 POST 添加任务即可。测试可以用 Postman 或 FastAPI 内置文档。


👀 步骤三:查看全部任务

@app.get("/todos/", response_model=List[TodoItem])
def get_todos():
    return todos

🗑️ 步骤四:删除指定任务(按 ID)

@app.delete("/todos/{todo_id}")
def delete_todo(todo_id: int):
    global todos
    todos = [t for t in todos if t.id != todo_id]
    return {"status": f"Deleted todo with id {todo_id}"}

运行项目后访问 http://127.0.0.1:8000/docs,系统会自动生成交互式 API 文档界面。你可以点击接口按钮进行测试!


新手常见问题解答

数据流转过程-1

❓ 我在终端启动报错了:“No module named ‘fastapi’”,怎么办?

▶️ 因为你还没安装 FastAPI,回到终端运行:

pip install fastapi

如果提示权限不足,加 --user

pip install fastapi --user

❓ 访问网页时显示空白或出错?

▶️ 先确认你是不是正确执行了下面的命令:

uvicorn main:app --reload

还要注意不要忘记加上 --reload,并且保持终端在运行状态。


❓ FastAPI 支持同步和异步吗?有什么区别?

✅ 支持!默认是同步方式,如果你需要处理高并发请求(比如百万级用户同时在线),可以使用 async def 声明异步接口。

比如:

@app.get("/async")
async def async_route():
    return {"message": "This is async!"}

对于大部分初学者而言,同步方式就够用了。


❓ 如何调试我的 FastAPI 接口?

✅ 推荐两种方式:

  1. 使用内置文档 /docs 测试接口
  2. 使用 Postman 或 curl 工具手动发送请求测试

示例 curl 命令:

curl -X POST http://localhost:8000/todos/ -H "Content-Type: application/json" -d '{"id": 1, "title": "Finish tutorial"}'

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

到这里为止,你已经掌握了 FastAPI 的基础使用方法,可以构建自己的简单后端 API 了。那接下来该往哪里进步呢?我给你几个方向建议:

✅ 1. 深入学习请求/响应类型

了解不同类型的请求(GET、POST、PUT 等)及其适用场景。

✅ 2. 数据库连接入门

学习如何连接数据库(如 SQLite、PostgreSQL、MySQL),使用 ORM(如 SQLAlchemy 或 Tortoise-ORM)持久化保存数据。

✅ 3. 异步编程实践

尝试使用 async/await 编写异步接口,提升性能。

✅ 4. 验证与认证

学会设置 token、JWT 等身份验证机制保护你的 API。


总结

负载均衡配置-2

在这篇文章中,我们一起完成了 FastAPI 的初步学习旅程,包括:

  • FastAPI 是什么,为什么适合 Python 初学者?
  • 快速搭建环境并跑起你的第一个接口
  • 掌握核心概念如路由、请求参数、数据模型等
  • 动手完成了一个待办事项的小项目
  • 解答了新手可能会遇到的典型问题
  • 给出了后续的学习方向

FastAPI 上手容易,功能强大,非常适合希望进入后端开发领域的 Python 学习者。希望你能继续探索,写出属于自己的完整 Web 服务!

如果你觉得这篇文章对你有帮助,欢迎分享给其他正在学习的朋友,一起进步!🌟


📌 字数统计约:2672 字

评论 0

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