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

预发守门员
2025-06-17 09:11
阅读 563

如果你是第一次接触后端开发,那么你可能会觉得这个领域有很多新名词和概念,比如“接口”、“RESTful”、“路由”等等。但别担心,在这个教程里,我们将用最简单、最直观的方式来引导你使用一个强大的工具——FastAPI,快速上手 Python 后端开发。

我们不从理论讲起,而是直接动手做项目,边写代码边理解知识点,让你在实践中掌握技能。


一、什么是FastAPI?能用来做什么?

缓存策略对比-1

一、什么是FastAPI?能用来做什么?

FastAPI 是一个基于 Python 的现代 Web 框架,专门用来构建后端 API(Application Programming Interface)。你可以把它想象成一个“自动化接待员”,它可以帮助你的网站或 App 接收用户发送的请求,并根据请求返回你需要的数据。

它的特点:

  • 高性能:速度接近 Node.js 和 Go
  • 自动生成文档:访问 /docs 就能查看所有 API 接口,调试超方便
  • 类型提示支持:帮你写更安全、更清晰的代码
  • 适合初学者:语法简洁易懂,社区活跃

能做什么?

  • 构建前后端分离的 Web 应用后台
  • 提供数据接口给小程序、App 使用
  • 实现用户登录、数据库查询等功能

二、环境准备:安装所需工具

二、环境准备:安装所需工具

工欲善其事,必先利其器。我们先来准备好开发环境。

步骤1:安装 Python

确保你已经安装了 Python 3.8 或以上版本。

检查命令:

python --version

如果没有安装,请前往官网 https://www.python.org/downloads/ 下载安装。

步骤2:创建虚拟环境(可选)

在项目目录下运行:

python -m venv venv

然后激活它:

  • Windows:

    venv\Scripts\activate
    
  • Mac/Linux:

    source venv/bin/activate
    

步骤3:安装 FastAPI 和 Uvicorn

Uvicorn 是运行 FastAPI 程序的服务器。

执行安装命令:

pip install fastapi uvicorn

三、核心概念讲解(实践版)

下面我们会介绍几个核心概念,并配上示例代码,帮助你理解它们的实际作用。

1. 创建第一个 FastAPI 应用

新建一个文件 main.py,输入以下内容:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "你好,欢迎来到我的第一个 FastAPI 接口"}

解释:

  • FastAPI() 创建了一个应用实例
  • @app.get("/") 表示这是一个 GET 请求,路径是根目录 /
  • read_root() 是这个接口的功能函数

运行方法:

uvicorn main:app --reload
  • main 是文件名
  • app 是 FastAPI 实例名
  • --reload 是热加载模式,代码修改后会自动重启

打开浏览器访问:

http://localhost:8000

你会看到如下输出:

{"message": "你好,欢迎来到我的第一个 FastAPI 接口"}

✨太棒啦!你现在有了一个可以运行的接口!


2. 添加一个新的接口

接着我们再添加一个接口用于打招呼:

@app.get("/hello/{name}")
def say_hello(name: str):
    return {"message": f"你好,{name}"}

运行之后,访问:

http://localhost:8000/hello/小明

你会看到:

{"message": "你好,小明"}

说明:

  • {name} 是路径参数(path parameter)
  • name: str 告诉 FastAPI 这个参数是字符串类型,也可以是 int、float、bool 等

3. 查询参数(Query Parameter)

有时候,我们需要传递额外的参数,例如:

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

访问示例:

http://localhost:8000/search?query=苹果&limit=5

结果:

{
  "query": "苹果",
  "limit": 5
}

4. POST 请求与数据接收

GET 请求主要用于获取数据,POST 则用于提交数据。

例子:让用户注册账号

from pydantic import BaseModel
from typing import Optional

class User(BaseModel):
    name: str
    email: str
    age: Optional[int] = None

@app.post("/register")
def register_user(user: User):
    return {
        "status": "success",
        "data": user
    }

说明:

  • BaseModel 是 Pydantic 提供的数据模型类,帮我们定义参数格式
  • Optional[int] 表示这个字段可有可无

尝试使用 Postman 或 curl 测试:

curl -X POST http://localhost:8000/register \
     -H "Content-Type: application/json" \
     -d '{"name":"张三", "email":"zhangsan@example.com", "age":25}'

你会收到一个 JSON 响应:

{
  "status": "success",
  "data": {
    "name": "张三",
    "email": "zhangsan@example.com",
    "age": 25
  }
}

5. 自动生成文档:Swagger UI & ReDoc

FastAPI 的一大亮点就是自带接口文档。

访问:

是不是非常方便?不用自己写文档,API 会自动整理出来。


四、实战项目:做一个简易的 Todo 管理系统

接下来,我们来做一个小项目,目标是实现以下功能:

  • 获取所有待办事项
  • 新增一个待办事项
  • 删除一个待办事项

第一步:初始化项目结构

我们继续使用刚才的 main.py 文件。

第二步:定义数据模型与存储方式

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

app = FastAPI()

# 数据模型
class TodoItem(BaseModel):
    id: int
    title: str
    done: bool = False

# 临时数据库(内存中)
todos = [
    TodoItem(id=1, title="学习 Python", done=True),
    TodoItem(id=2, title="练习 FastAPI"),
]

# 存储 ID 计数器
current_id = 3

第三步:实现获取接口

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

现在访问:

http://localhost:8000/todos

你应该会看到两个任务信息。

第四步:新增任务接口

@app.post("/todos", response_model=TodoItem)
def create_todo(todo: TodoItem):
    global current_id
    todo.id = current_id
    current_id += 1
    todos.append(todo)
    return todo

试试使用 Postman 提交 JSON 数据:

{
  "title": "完成 FastAPI 教程"
}

你会得到一个带 ID 的响应,并且刷新 /todos 接口能看到新增的任务。

第五步:删除任务接口

@app.delete("/todos/{todo_id}")
def delete_todo(todo_id: int):
    for index, todo in enumerate(todos):
        if todo.id == todo_id:
            del todos[index]
            return {"message": "删除成功"}
    raise HTTPException(status_code=404, detail="任务未找到")

服务器部署方案-2

访问:

DELETE http://localhost:8000/todos/2

成功后会返回:{"message": "删除成功"}

如果任务不存在,会返回错误信息。


五、常见问题解答

❓我运行报错了:ModuleNotFoundError: No module named 'fastapi'

说明没有正确安装 FastAPI,回到第二步重新安装即可。

❓为什么访问接口时返回了 HTML 页面而不是 JSON?

确认你是否误用了浏览器访问 POST 接口。浏览器默认发送的是 GET 请求,建议用 Postman、curl 或者 Swagger 测试接口。

❓我写的程序无法识别中文怎么办?

Python 默认编码是 UTF-8,只要你在代码文件顶部加上:

# -*- coding: utf-8 -*-

并保存为 UTF-8 格式即可。

❓我可以不在本地运行吗?我想上线试试

当然可以。后续你可以学习部署到 Nginx + Gunicorn + FastAPI 的组合,或者使用像 Vercel、Railway 这样的平台。


六、下一步学习建议

完成了本教程,恭喜你已经掌握了 FastAPI 的基础使用!接下来你可以进一步学习:

  1. ✅ 数据库连接(如 SQLite、PostgreSQL)
  2. ✅ 用户认证与 Token 验证
  3. ✅ 异步编程与性能优化
  4. ✅ 单元测试和日志管理
  5. ✅ 接口鉴权(OAuth2/JWT)
  6. ✅ Docker 打包部署项目

总结

在这篇《FastAPI入门:Python后端开发新手指南》中,我们一步步搭建了开发环境,学习了基本的 GET/POST 请求处理,使用了 Pydantic 数据模型,还实战开发了一个 Todo 待办管理系统。

通过动手实践的方式,你已经迈出了成为一名后端开发者的重要一步。

记住一句话:“编程不是背出来的,是写出来的。” 多敲代码、多思考,就能越学越轻松!

祝你学得愉快,早日写出属于自己的接口服务 💻🚀

评论 0

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