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

郑艳
2025-06-22 13:39
阅读 770

开篇:FastAPI是什么?用来做什么?

开篇:FastAPI是什么?用来做什么?

如果你是零基础的新手,第一次听到“FastAPI”这个词,可能会觉得它听起来很深奥。别担心,其实它是一个非常亲民的工具,特别适合我们这些刚开始学习编程的人。

FastAPI 是一个基于 Python 的 Web 框架,用于快速构建 API(应用程序接口)。你可以把它想象成一个“自动问答机器人”,当用户提出问题(比如访问一个网址),你就可以通过 FastAPI 回答他们想要的数据或结果。

简单来说,它的主要用途包括:

  • 创建网站后台服务
  • 提供数据给前端网页、手机 App 或小程序
  • 实现与其他系统的数据交互(比如微信、支付宝)

举个例子:你在淘宝上查商品价格,其实是调用了淘宝的 API;你在天气 App 上看明天会不会下雨,也是因为 App 请求了气象站的 API 数据。而 FastAPI 能帮你写一个属于自己的 API 接口,让别人来用你的数据和服务!

而且 FastAPI 还有以下优点,非常适合初学者:

✅ 速度快,性能好
✅ 支持自动生成文档
✅ 语法简洁,易读性强
✅ 内置参数校验功能
✅ 完美支持异步编程

接下来,我们就从最基础的环境搭建开始,一起开启这段旅程吧!


环境准备:轻松搞定开发工具安装

环境准备:轻松搞定开发工具安装

在写任何程序之前,我们得先准备好“工具箱”。这一部分会详细教你如何安装必要的软件和库。

第一步:安装 Python

FastAPI 是 Python 写的,所以当然要先装好 Python。建议你使用 Python 3.8 及以上版本。

下载地址:https://www.python.org/downloads/

安装时记得勾选「Add to PATH」,这样电脑才能知道去哪里找 Python。

安装完成后,在命令行输入:

python --version

如果看到类似 Python 3.9.x 的字样,说明安装成功啦!


第二步:创建虚拟环境(可选但推荐)

为了避免不同项目之间的依赖包冲突,我们可以为每个项目创建一个“独立的小房间”,这就是 虚拟环境

在项目文件夹中打开终端(命令行),运行以下命令:

python -m venv venv

然后激活虚拟环境:

  • Windows:
    venv\Scripts\activate
    
  • Mac/Linux:
    source venv/bin/activate
    

激活成功后,命令行前面会出现 (venv) 字样,表示已经进入这个“独立空间”。


第三步:安装 FastAPI 和 Uvicorn

现在我们要安装 FastAPI 和一个运行它的工具 —— Uvicorn

还是在命令行中执行下面这句:

pip install fastapi uvicorn

等待安装完成即可。


小贴士:测试安装是否成功

新建一个文件叫 main.py,里面写下:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "欢迎来到我的第一个 FastAPI 应用!"}

然后在命令行中运行:

uvicorn main:app --reload

这时你会看到一大串日志信息,最后提示服务正在运行,并告诉你访问地址:http://127.0.0.1:8000

打开浏览器,访问这个地址,就能看到返回的 JSON 数据:

{
  "message": "欢迎来到我的第一个 FastAPI 应用!"
}

恭喜你,你的第一个 FastAPI 程序运行成功啦!


核心概念:FastAPI 中的几个关键知识点

核心概念:FastAPI 中的几个关键知识点

接下来我们来看看 FastAPI 中最重要的几个概念。记住,我们不求记住所有细节,先理解大概意思就好。

1. FastAPI 的本质:处理 HTTP 请求

FastAPI 的任务就是接收网络请求(比如你浏览器访问了一个网址),然后给出响应(比如返回数据)。

常见的 HTTP 方法 有几种:

方法 含义
GET 获取资源
POST 提交新数据
PUT 更新已有数据
DELETE 删除数据

在 FastAPI 中,我们通过装饰器来绑定这些方法,比如:

@app.get("/")          # 当访问根路径 / 时触发这个函数
def read_root():
    return {"message": "你好,世界!"}

2. 路由(URL 路径)

路由就是你访问的 URL 地址,比如:

  • /:首页
  • /users:用户列表页
  • /users/123:查看 ID 为 123 的用户信息

在 FastAPI 中定义路由非常简单:

@app.get("/hello")
def say_hello():
    return {"content": "Hello, World!"}

这样,当你访问 http://localhost:8000/hello 时,就会显示这条消息。


3. 参数传递方式

很多时候我们需要从用户那里获取一些输入,比如他们的名字、年龄等。在 FastAPI 中有三种常见传参方式:

(1)路径参数(Path Parameters)

把参数直接写在 URL 路径里,适合唯一标识符,比如用户 ID:

@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"user_id": user_id}

访问 /users/12345,会输出:{"user_id": 12345}

注意:user_id: int 会自动转换成整数类型,还能做类型检查哦!


(2)查询参数(Query Parameters)

放在 URL 后面的 ?key=value 形式:

@app.get("/search")
def search(name: str, age: int = None):
    return {"name": name, "age": age}

访问:/search?name=Tom&age=20,结果为:

{"name": "Tom", "age": 20}

(3)请求体(Request Body)

适用于 POST 请求,可以提交更复杂的数据结构,比如一个用户注册表单:

from pydantic import BaseModel

class UserCreate(BaseModel):
    username: str
    email: str
    password: str

@app.post("/register")
def register(user: UserCreate):
    return {
        "message": f"用户 {user.username} 注册成功!",
        "email": user.email
    }

你可以用 Postman、curl 或者浏览器插件发送 POST 请求试试看!


4. 自动生成文档(Swagger UI 和 ReDoc)

这是我们学习过程中特别实用的一个功能!

启动服务后,访问以下两个地址,可以看到接口文档:

你可以直接在这个界面上点击“Try it out”来测试 API 功能,不需要额外写测试代码!


实战项目:做一个简单的用户管理系统

我们已经了解了一些基本知识,现在让我们动手做一个小项目来巩固一下所学内容。

项目目标:实现用户数据的增删改查(CRUD)

我们将实现如下功能:

功能 方法 URL
查询所有用户 GET /users
查询单个用户 GET /users/{id}
添加用户 POST /users
更新用户 PUT /users/{id}
删除用户 DELETE /users/{id}

步骤一:创建文件结构

在你的项目文件夹中,新建文件:

project/
├── main.py
└── database.py

步骤二:模拟数据库(为了简单起见)

因为我们还没学数据库连接,这里先用内存中的一个列表来模拟:

database.py 中写:

users = []
next_id = 1

步骤三:编写主程序逻辑

修改 main.py

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from database import users, next_id

app = FastAPI()

# 用户模型
class UserCreate(BaseModel):
    name: str
    email: str

class UserResponse(BaseModel):
    id: int
    name: str
    email: str

# 查询所有用户
@app.get("/users", response_model=list[UserResponse])
def get_users():
    return users

# 查询单个用户
@app.get("/users/{user_id}", response_model=UserResponse)
def get_user(user_id: int):
    for user in users:
        if user["id"] == user_id:
            return user
    raise HTTPException(status_code=404, detail="用户未找到")

# 添加用户
@app.post("/users", response_model=UserResponse)
def create_user(user: UserCreate):
    global next_id
    new_user = {"id": next_id, "name": user.name, "email": user.email}
    users.append(new_user)
    next_id += 1
    return new_user

# 更新用户
@app.put("/users/{user_id}", response_model=UserResponse)
def update_user(user_id: int, updated_user: UserCreate):
    for user in users:
        if user["id"] == user_id:
            user.update(updated_user.dict())
            return user
    raise HTTPException(status_code=404, detail="用户未找到")

# 删除用户
@app.delete("/users/{user_id}", response_model=dict)
def delete_user(user_id: int):
    for i, user in enumerate(users):
        if user["id"] == user_id:
            del users[i]
            return {"message": "用户已删除"}
    raise HTTPException(status_code=404, detail="用户未找到")

服务器部署方案-1

步骤四:运行项目并测试

在命令行执行:

uvicorn main:app --reload

然后访问:http://127.0.0.1:8000/docs

点开每一个接口,用 “Try it out” 来测试添加、更新、删除和查询操作。

是不是很神奇?你的第一个完整的 API 接口系统就这样完成了!


常见问题解答(FAQ)

Q1:FastAPI 需要数据库吗?

A:不一定。你可以用内存中的变量(比如列表或字典)临时保存数据。但如果要做真正的应用,还是需要连接数据库的,例如 SQLite、MySQL、PostgreSQL。


Q2:为什么我不能访问 localhost:8000?

A:请确认你已经正确运行了 uvicorn 命令,并且没有报错。有时候杀毒软件或防火墙也会阻止访问本地服务器,可以暂时关闭试试。


Q3:出现 ModuleNotFoundError 怎么办?

A:这是因为你还没安装相关模块。比如如果提示找不到 fastapi,那就执行:

pip install fastapi

确保所有依赖都安装完整。


Q4:POST 请求为什么总是报错?

A:可能是你发送的 JSON 格式不对。可以用 JSON Lint 检查格式是否正确,或者使用 Swagger 页面提供的表单来测试。


Q5:FastAPI 支持中文吗?

A:完全支持!你可以在返回值里自由使用中文,比如:

return {"消息": "你好,世界!"}

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

你现在已经掌握了 FastAPI 的基本用法,接下来可以继续深入学习以下几个方向:

✅ 1. 数据库存储(进阶)

可以尝试连接真实的数据库:

  • SQLite(轻量级)
  • MySQL / PostgreSQL(企业级)
  • MongoDB(非关系型数据库)

FastAPI 很容易与数据库结合,你可以学习使用 SQLAlchemy、Tortoise ORM、MongoEngine 等工具。


✅ 2. 认证与权限控制

学会如何让用户登录、设置角色权限,例如:

  • JWT(JSON Web Token)
  • OAuth2
  • Session 登录

这些都是开发真实应用必须掌握的内容。


✅ 3. 异步编程(提升性能)

FastAPI 支持异步编程,可以写出更快的网络应用。如果你对效率有追求,建议学习 async/await 关键字的使用。


✅ 4. 部署上线

完成本地开发后,可以尝试将你的 FastAPI 项目部署到服务器,比如:

  • 使用 Nginx + Gunicorn/Uvicorn 配合 Docker
  • 部署到云服务器(阿里云、腾讯云、Heroku)

这样你的 API 才能真正被外部用户访问到。


✅ 5. 继续练手项目推荐

尝试自己写一些小型项目:

  • 博客系统
  • 天气预报接口
  • 图书借阅管理
  • 商品订单系统

边做边查资料,进步最快!


结语:坚持是最好的老师

到这里为止,你已经学会了 FastAPI 的基本用法,也完成了一个实战项目。虽然还有很多高级内容等着你去探索,但重要的是你已经跨出了第一步!

记住一句话:“程序员不是天生的,而是练出来的。”

保持好奇心,多敲代码,多实践,很快你也能成为一个自信满满的后端开发者!

如果你喜欢这篇文章,欢迎收藏、分享,有任何疑问也可以留言交流。祝你在编程路上越走越远!🚀

评论 0

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