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

沉默的架构师
2025-06-14 01:20
阅读 291

开篇:什么是FastAPI?

开篇:什么是FastAPI?

你可能听说过一些做网站的名词,比如“前端”、“后端”,或者是“服务器”。简单来说:

  • 前端是你在网页上看到的内容(比如按钮、图片)。
  • 后端则是处理这些内容背后的逻辑(比如登录验证、数据存储)。

而我们今天要学习的 FastAPI,就是一个用来做“后端”的工具。它可以帮助我们快速搭建一个提供数据服务的 Web 系统,比如微信小程序的后台接口、电商网站的订单系统等。

FastAPI 是使用 Python 语言开发的一种现代化 Web 框架,它最大的特点是:

  • 快速开发
  • 自动生成 API 文档
  • 支持异步操作
  • 易于理解和维护

如果你对这些术语还不太明白没关系,下面我们会一步步带你了解。


环境准备:搭建你的第一个 FastAPI 开发环境

环境准备:搭建你的第一个 FastAPI 开发环境

开始写代码前,我们先准备好开发环境。整个过程不需要太多复杂操作,跟着步骤来就可以搞定!

1. 安装 Python

首先确保你已经安装了 Python。推荐使用 Python 3.8 及以上版本。

你可以通过命令行输入以下命令查看是否安装成功:

python --version

如果返回类似 Python 3.9.x 的信息,说明安装好了。

如果没有安装,请去 https://www.python.org/downloads/ 下载并安装。

2. 安装 FastAPI 和 Uvicorn

FastAPI 本身是一个库,我们需要用 pip 来安装它,以及配套的服务启动器 Uvicorn。

打开命令行或终端,运行:

pip install fastapi uvicorn

这样就安装完成了!👏

3. 测试环境是否安装正确

我们来写个最简单的程序测试一下。

新建一个文件叫 main.py,在里面写入以下代码:

from fastapi import FastAPI

app = FastAPI()

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

然后在命令行中运行:

uvicorn main:app --reload

你会看到类似下面的输出:

INFO:     Will watch for changes in these directories: ['your-path']
INFO:     Uvicorn running on http://127.0.0.1:8000

现在打开浏览器访问:http://127.0.0.1:8000
你将看到如下内容:

{"Hello": "World!"}

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


核心概念:FastAPI 中那些听起来很专业的东西

核心概念:FastAPI 中那些听起来很专业的东西

学编程就像学开车,有些东西一开始听着像黑话,但其实很简单。下面我们来解释几个 FastAPI 中的核心概念。

📌 1. 什么是 API?

API 就像菜单。假设你在餐厅点菜,你是用户,厨房是服务器。中间传菜的就是 API —— 它接收你的请求,再把结果返回给你。

举个例子,你用微信登录某个应用时,这个应用就会通过某个 API 去请求微信是否允许你登录。

在 FastAPI 中,我们定义一个个 API 接口,例如 /hello 或者 /users/login

📌 2. HTTP 请求方法:GET 和 POST

这两个是最常见的请求类型:

方法 含义 示例
GET 获取数据 访问首页、读取文章
POST 提交数据 注册账号、上传文件

在 FastAPI 中,我们可以这样写:

@app.get("/greet")
def greet_get():
    return {"message": "你好,这里是GET方法"}

@app.post("/login")
def login_post():
    return {"status": "登录成功"}

📌 3. 路由(Route)

路由就是路径,决定哪个 URL 对应哪个函数。

比如:

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

这里 /user/{user_id} 是一个动态路由,访问 /user/123 时,user_id=123

📌 4. 查询参数与请求体

查询参数(Query Parameters)

当你在搜索框里输入“手机”,URL可能会变成:/search?q=手机,这里的 q 就是查询参数。

from fastapi import FastAPI

@app.get("/search")
def search(q: str):
    return {"search_term": q}

请求体(Request Body)

当你要提交一段较复杂的数据时,通常用 POST 方法,并通过请求体传输 JSON 数据。

from fastapi import FastAPI
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}

注意:这里用了 pydantic,这是 FastAPI 强大的原因之一,它会自动校验数据类型是否正确!

✅ 总结:核心知识点一览表

概念 解释 实际用途
API 应用之间通信的桥梁 从前端拿到数据、给前端返回数据
GET/POST 请求方式 获取数据 / 提交数据
路由 URL 地址和函数对应关系 决定访问哪个功能
查询参数 URL 中的参数 过滤、搜索等
请求体 发送复杂数据(如 JSON) 提交注册信息、订单数据等

实战项目:做一个最简单的博客接口

纸上得来终觉浅,我们动手做个小小项目吧!目标:创建一个可以添加文章、查看所有文章的小型博客接口。

第一步:初始化项目结构

新建一个文件夹叫做 blog_api,在这个文件夹中创建一个文件:main.py

第二步:定义模型(数据格式)

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

app = FastAPI()

# 定义一篇文章的结构
class Article(BaseModel):
    title: str
    content: str

# 临时存储数据用的列表
articles = []

@app.get("/articles", response_model=List[Article])
def get_articles():
    return articles

@app.post("/articles")
def add_article(article: Article):
    articles.append(article)
    return {"message": "文章已添加"}

第三步:运行项目

命令行中执行:

uvicorn main:app --reload

访问 http://localhost:8000/docs,你会看到自动生成的交互式 API 文档!

在这里你可以:

  • 点击 GET /articles 查看现有文章列表
  • 点击 POST /articles 添加新文章(点击“Try it out”输入标题和内容)

✅ 至此,你的第一个小型博客后端接口完成啦!


常见问题:初学者常遇到的坑和解决方法

❓1. 安装时提示模块找不到,怎么办?

错误示例:

ModuleNotFoundError: No module named 'fastapi'

👉 解决办法: 请确认你已经安装了 fastapi,命令如下:

pip install fastapi uvicorn

如果使用的是虚拟环境,请确认激活状态。


❓2. 启动时提示 “Error loading ASGI app”

错误原因可能是文件名或者变量名拼错了,比如你写了:

uvicorn appp:app --reload

但实际上应该是 main.py 文件里才有 app 变量。

👉 修改为正确的命令即可:

uvicorn main:app --reload

❓3. 返回中文乱码?

FastAPI 默认返回 JSON 格式,支持中文,但有时候前端展示有问题。

解决方案是确保返回值是标准字符串即可。

✅ 正确做法:

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

❓4. 如何查看我的 API 是否正常?

FastAPI 自带了一个很棒的功能:交互式文档!

只需访问:

http://127.0.0.1:8000/docs

你就能直接测试你的接口,包括发送请求、传递参数、查看响应!


学习建议:接下来怎么深入学习?

系统架构设计图-1

掌握了 FastAPI 最基本的使用之后,你可以沿着以下几个方向继续提升自己:

🧪 1. 数据库连接

目前我们只是用内存中的列表保存文章,一旦重启服务器数据就没了。下一步你可以学习如何连接数据库(比如 SQLite、MySQL),真正地保存数据。

推荐学习包:SQLAlchemy + databases(FastAPI官方推荐)

🔐 2. 用户认证与权限控制

你想让不同用户有不同的访问权限吗?比如管理员能删除文章,普通用户只能查看?这就涉及到用户登录、令牌管理等内容。

关键词:OAuth2、JWT、身份验证

⚙️ 3. 部署上线

写完的程序不光能在本地测试,也可以发布到互联网上让别人使用。

部署常用工具:

  • 使用 Gunicorn + Nginx + Ubuntu 部署
  • 云平台部署(如阿里云、Heroku)

🛠️ 4. 工程化与进阶实践

随着项目变大,你需要更好地组织代码结构,比如按功能划分目录、使用依赖注入、日志记录等等。

推荐资源:


结语:坚持练习,才能更进一步!

刚接触后端开发的同学可能会觉得有点难,但记住一句话:

编程不是靠看懂,而是靠多写、多练。

每学会一个接口的编写,你就离独立开发一个完整的项目更近了一步。希望这篇教程能为你打开后端开发的大门!

如果你喜欢这样的教学风格,欢迎关注我后续发布的更多零基础系列教程:从数据库、Web安全,到真实项目实战,一路陪着你成长!

🚀 加油吧,未来的开发者!

评论 0

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