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

Prompt修理师
2025-06-17 14:47
阅读 786

开篇:FastAPI到底是个啥?我为什么要学它?

开篇:FastAPI到底是个啥?我为什么要学它?

你是不是也听说过“后端开发”、“接口”、“服务器”这些词,但一直不知道它们到底是干什么的?没关系!我们从最简单的开始。

想象一下你玩手机App的时候,比如淘宝、微信或者抖音。当你点击一个按钮,比如搜索商品或发送消息时,这个请求其实会跑到远程的一台电脑(叫“服务器”)上去处理。后端开发就是负责写这台电脑上运行的程序,让它能正确地接收你的请求、处理数据、再返回结果给你。

FastAPI 就是一个帮助你快速写出这种“服务器程序”的工具,是用 Python 写的!

它的优点有:

  • 上手简单,特别适合新手
  • 性能高,能处理很多请求
  • 自动生成 API 文档,方便查看和测试
  • 支持现代技术,比如异步编程(后面会讲)

总之,如果你是零基础想入门前端/后端开发,FastAPI 是个非常好的起点!


环境准备:让你的电脑准备好写 FastAPI 项目

环境准备:让你的电脑准备好写 FastAPI 项目

学习任何编程技能之前,第一步永远是安装环境。不用担心,这个过程很轻松。

步骤一:安装 Python(3.8 或以上)

FastAPI 需要 Python 3.8 以上的版本。你可以去 Python官网 下载最新版并安装。装好后打开命令行(Windows 按 Win + R,输入 cmd;Mac 打开终端),输入:

python --version

如果显示的是 3.9.x3.10.x,那你就搞定了!

⚠️ 如果提示不是内部命令,可能是没加环境变量。可以重新安装,勾选“Add to PATH”。


步骤二:创建虚拟环境(推荐)

Python 有个很方便的功能叫做“虚拟环境”,就是专门为每个项目创造一个独立的空间,防止不同项目之间打架(比如依赖不同版本库)。

创建虚拟环境:

python -m venv myenv

激活虚拟环境:

  • Windows:

    myenv\Scripts\activate
    
  • Mac/Linux:

    source myenv/bin/activate
    

激活后命令行前面应该会多出 (myenv) 的字样,表示你在使用这个虚拟环境了。


步骤三:安装 FastAPI 和 Uvicorn

FastAPI 只是框架本身,我们需要一个“服务器引擎”来运行它。通常我们会配合 Uvicorn 使用,它是用来启动 FastAPI 应用的服务软件。

在命令行中执行以下命令安装:

pip install fastapi uvicorn

安装完成后可以用下面这个命令检查是否成功:

uvicorn --version

如果你看到类似这样的输出:

Running uvicorn 0.27.0 with CPython 3.10.6 on Darwin

那就说明你已经准备好了!


核心概念:FastAPI 基础知识速通

缓存策略对比-1

别被“概念”这个词吓到,我保证,这一节超简单,而且全都有代码示例。

1. 创建一个应用对象

首先我们要导入 FastAPI,然后创建一个“应用实例”。这就是整个项目的入口点。

新建一个文件,比如叫 main.py,写入下面的内容:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "你好,世界!"}

这是什么意思呢?

  • FastAPI():创建了一个 FastAPI 应用。
  • @app.get("/"):这是一个装饰器,表示当用户访问网站根路径 / 时,调用 read_root 这个函数。
  • 函数返回的 {"message": "你好,世界!"} 就是我们给用户的响应。

2. 启动服务器

在命令行中运行:

uvicorn main:app --reload

说明:

  • main 表示文件名(main.py)
  • app 是我们定义的应用实例
  • --reload 表示代码变化后自动重启服务器(开发模式用)

现在打开浏览器,访问地址:http://localhost:8000

你应该会看到:

{
  "message": "你好,世界!"
}

太棒啦!你现在有一个能工作的网页接口了!


3. 自动生成文档(Swagger UI)

更酷的是,FastAPI 自动帮你生成了接口文档,在浏览器访问:

http://localhost:8000/docs

你会看到一个漂亮的交互式页面,里面可以看到所有你写的接口,并且还能直接点进去测试!


4. 路由与请求方法(GET / POST)

除了 GET 请求,我们也常用 POST 方法传数据。比如用户登录、提交订单等场景通常使用 POST。

修改 main.py,新增一个 POST 接口:

@app.post("/login")
def login(username: str, password: str):
    return {
        "username": username,
        "status": "success"
    }

保存后刷新服务(因为开了 --reload,不用手动重启),然后在 docs 页面试试调用这个接口!


5. 查询参数 vs 请求体(Query vs Body)

这两个经常容易混淆。我们可以这样理解:

✅ 查询参数(Query Parameters)

就像浏览器地址栏里的那种:
比如:http://example.com/search?query=book&limit=5

写法如下:

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

✅ 请求体(Request Body)

用于 POST 等方法,数据藏在请求正文里。你需要导入 BaseModel 来描述结构。

from pydantic import BaseModel

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

@app.post("/items")
def create_item(item: Item):
    return {"received": item}

这样你提交一个 JSON 数据就能收到它:

{
  "name": "苹果",
  "price": 8.5
}

6. 路径参数(Path Parameters)

有时候我们希望 URL 中带上变量,比如文章 ID:

@app.get("/article/{article_id}")
def get_article(article_id: int):
    return {"id": article_id, "title": f"第 {article_id} 篇文章"}

访问:http://localhost:8000/article/123,你会得到:

{
  "id": 123,
  "title": "第 123 篇文章"
}

实战项目:做一个“待办事项”管理器

我们来做一个完整的 mini 小项目:待办事项列表管理系统

目标功能:

  • 查看所有任务
  • 新增一个任务
  • 删除某个任务(进阶)

Step 1:先搭架子

创建文件夹 todo-app,里面放一个 main.py

内容如下:

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

app = FastAPI()

# 模拟数据库(后面学数据库就换成真的)
tasks = []

class TaskCreate(BaseModel):
    title: str
    description: Optional[str] = None

class Task(TaskCreate):
    id: int

@app.get("/tasks", response_model=List[Task])
def get_tasks():
    return tasks

@app.post("/tasks", response_model=Task)
def create_task(task: TaskCreate):
    task_id = len(tasks) + 1
    new_task = Task(**task.dict(), id=task_id)
    tasks.append(new_task)
    return new_task

启动服务器:

uvicorn main:app --reload

打开 docs,试试看添加两个任务:

POST 到 /tasks,格式为:

{
  "title": "买菜",
  "description": "下午去超市买菜"
}

然后 GET /tasks 就能看到所有任务了!


Step 2:加上删除功能(可选)

想挑战下自己?我们来加个删除功能:

@app.delete("/tasks/{task_id}")
def delete_task(task_id: int):
    for index, task in enumerate(tasks):
        if task.id == task_id:
            del tasks[index]
            return {"message": "删除成功"}
    return {"message": "没有找到该任务"}

这样你就可以访问 /tasks/1 并使用 DELETE 方法把第一条任务删掉了。


常见问题:新手最容易遇到的问题 & 解决办法

这里总结了一些我平时教学中最常见的坑,希望能帮你绕过去!


❓ Q1:运行 uvicorn 提示找不到模块怎么办?

比如报错说:

ModuleNotFoundError: No module named 'fastapi'

说明你没装 FastAPI,用下面这条命令装:

pip install fastapi uvicorn

❓ Q2:访问不了本地服务器怎么办?

确保你运行了 uvicorn 命令,并且看到这句:

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

如果有防火墙或者网络限制,有时候需要换地址,比如用 0.0.0.0:8000

uvicorn main:app --host 0.0.0.0 --port 8000

❓ Q3:为什么我的修改不生效?

如果你没加 --reload 参数,就需要手动停止再重启服务。建议总是加上 --reload(开发时很有用)。


❓ Q4:Python 多版本冲突怎么办?

如果你的系统中装了多个 Python,可以考虑使用虚拟环境隔离出来,避免污染全局环境。


❓ Q5:Post 请求必须用 JSON 格式吗?

FastAPI 默认支持 JSON。如果你想传其他格式,需要额外设置,比如 form-data、XML 等。


学习建议:下一步我可以学什么?

数据流转过程-2

恭喜你完成了第一个 FastAPI 应用!接下来你可以继续深入以下几个方向:

🧩 1. 学习数据库连接(非常重要!)

目前我们的“任务列表”都只是存在内存里,重启就没了。真实项目中需要用数据库保存数据。推荐学习:

  • SQLAlchemy(操作关系型数据库如 PostgreSQL、MySQL)
  • Tortoise ORM(更适合异步操作)

教程建议关键词:FastAPI + ORM + 数据库连接


🔒 2. 学习认证与权限控制

比如用户登录、角色管理。可以学习:

  • JWT 认证
  • OAuth2(常用于第三方登录)
  • Session 认证

📦 3. 把项目打包上线

想让别人也能访问你的服务器?你可以:

  • 部署到云服务器(如阿里云、腾讯云)
  • 使用 Docker 打包运行
  • 配置 Nginx 做反向代理

🧠 4. 学习异步编程

FastAPI 很强大是因为它原生支持异步。你可以学习:

  • async def 函数
  • await 关键字
  • 异步请求外部接口

这对性能提升非常关键。


结语:坚持下去,你也能成为高手!

编程是一门实践性很强的技术。你看完这篇文章、跑通了例子之后,最重要的事情就是——动手做自己的项目

你可以尝试做个博客后台、做个问卷调查小工具、甚至做个简易商城……只要你敢想,就能实现!

如果你喜欢这样的教程风格,欢迎留言告诉我你还想了解什么主题:Flask?Django?前端Vue?我都会为你写出来!

Happy coding 😄

评论 0

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