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

MySQL修理工
2025-06-23 05:01
阅读 570

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

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

你是不是也经常听别人说,要学做网站、写接口、搭建服务器,听起来很高级?其实,这并不遥远。我们今天要讲的 FastAPI 就是一个让你轻松上手后端开发的强大工具。

🎯 FastAPI 简介

FastAPI 是一个基于 Python 的现代 Web 框架,专为构建 API(Application Programming Interface)而生。简单来说,它的作用就是帮助你用 Python 写出可以接收请求、返回数据的服务。你可以用它来创建:

  • 微信小程序后端
  • 移动 App 接口服务
  • Web 后台管理系统
  • 人工智能模型的数据接口等

🔧 FastAPI 的优点

  1. 速度快:性能接近 Go 和 Node.js。
  2. 自动文档:自动生成交互式 API 文档(Swagger 和 ReDoc)。
  3. 类型检查支持:利用 Python 的类型注解功能,提高代码质量和开发效率。
  4. 异步支持:适合高并发场景,比如处理大量用户请求。

环境准备:安装与配置你的开发环境

环境准备:安装与配置你的开发环境

在开始写代码之前,我们需要准备好开发环境。别担心,步骤很简单!

第一步:安装 Python

确保你的电脑已经安装了 Python 3.8 或更高版本。可以通过命令行输入以下指令来查看当前版本:

python --version

如果没有安装 Python,可以从官网 https://www.python.org/downloads/ 下载并安装。

第二步:安装 FastAPI 和 Uvicorn

我们还需要一个运行 FastAPI 的服务器,推荐使用 uvicorn

在终端中执行下面两条命令:

pip install fastapi
pip install uvicorn

安装完成后,就可以开始编写第一个 FastAPI 应用了!


核心概念:从零理解关键知识点

核心概念:从零理解关键知识点

学习任何新技术时,都需要先了解它的一些基础概念。以下是几个你将会经常遇到的核心关键词:

✅ 什么是 API?

API(应用程序编程接口)就是程序之间沟通的桥梁。例如:

  • 你访问了一个微信小程序的“登录”按钮 → 程序向服务器发送用户名和密码 → 服务器通过 API 回传是否登录成功。

FastAPI 就是用来快速搭建这些 API 的工具。

✅ 什么是路由(Route)?

路由就像是一扇门,决定当用户访问某个地址时应该看到什么样的内容。例如:

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

上面的例子表示:当用户访问 /hello 地址时,就调用 say_hello() 函数返回数据。

✅ 什么是请求方法?

HTTP 协议中,常用的请求方法有以下几个:

方法名 用途说明
GET 获取数据(如获取用户列表)
POST 提交数据(如注册新用户)
PUT 修改已有数据(如修改用户信息)
DELETE 删除数据(如删除用户)

这些方法我们在后面写项目时会一一用到。

✅ 参数传递方式

常见的参数传递方式有:

查询参数(Query Parameters)

在 URL 中以 ?key=value 的形式传递参数:

from fastapi import FastAPI

app = FastAPI()

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

访问方式:http://localhost:8000/search?q=fastapi

路径参数(Path Parameters)

直接作为 URL 的一部分:

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

访问方式:http://localhost:8000/user/123

请求体参数(Body Parameters)

POST 请求常用,用于提交结构化的数据(如表单、JSON):

from pydantic import BaseModel

class User(BaseModel):
    name: str
    email: str

@app.post("/user/")
def create_user(user: User):
    return {"received": user}

实战项目:构建一个简单的博客系统 API

实战项目:构建一个简单的博客系统 API

接下来我们一起来做一个实战项目,实现一个简单的 博客文章管理 API。包含四个功能:

  • 查看所有文章(GET)
  • 添加一篇文章(POST)
  • 获取某篇文章详情(GET + ID)
  • 删除某篇文章(DELETE)

🛠 项目结构设计

我们将用内存中的一个列表来存储文章数据。

1. 创建主文件 main.py

新建一个名为 main.py 的文件,写入如下代码:

from fastapi import FastAPI
from pydantic import BaseModel

# 定义模型
class Article(BaseModel):
    title: str
    content: str

# 初始化应用
app = FastAPI()

# 模拟数据库
articles = []

# 查看所有文章
@app.get("/articles")
def read_articles():
    return articles

# 添加一篇文章
@app.post("/articles")
def add_article(article: Article):
    articles.append(article)
    return {"message": "Article added", "data": article}

# 获取单篇文章
@app.get("/articles/{article_id}")
def read_article(article_id: int):
    if article_id < len(articles):
        return articles[article_id]
    return {"error": "Article not found"}

# 删除一篇文章
@app.delete("/articles/{article_id}")
def delete_article(article_id: int):
    if article_id < len(articles):
        deleted = articles.pop(article_id)
        return {"message": "Article deleted", "deleted": deleted}
    return {"error": "Article not found"}

缓存策略对比-1

2. 启动服务

在终端执行下面命令启动服务器:

uvicorn main:app --reload

现在访问 http://127.0.0.1:8000/docs,你会看到一个漂亮的交互式文档界面,可以直接在这里测试你的 API!

3. 测试功能

点击 /articles 下的 “POST”,在请求体里输入:

{
  "title": "我学会了FastAPI",
  "content": "原来后端也可以这么简单!"
}

点击 “Try it out” → “Execute”,看看返回结果。

接着试试用 GET 获取文章列表、删除文章等功能吧!


常见问题:新手常见疑问解答

刚接触 FastAPI,可能会遇到不少疑惑。下面是几个初学者最常问的问题。

❓Q1:为什么我的 API 返回的是 HTML 页面而不是 JSON 数据?

👉 可能是因为你没有加上正确的请求头,建议使用 Postman、curl 或 FastAPI 自带的 Docs 来测试接口。浏览器默认是 GET 请求,有时看不到详细响应。

❓Q2:怎么才能让接口支持中文或者特殊字符?

👉 默认情况下 FastAPI 支持 UTF-8,只要保证客户端和后端都统一使用 UTF-8 编码即可。大多数工具默认都是这个编码方式。

❓Q3:FastAPI 必须配合数据库吗?

👉 不一定,本教程用的是内存变量模拟数据库,实际开发中一般会连接 MySQL、PostgreSQL、MongoDB 等真实数据库。

❓Q4:FastAPI 支持上传图片或文件吗?

👉 支持!FastAPI 可以结合 FileUploadFile 类型处理文件上传。例如:

from fastapi import FastAPI, File, UploadFile

app = FastAPI()

@app.post("/upload/")
async def upload_file(file: UploadFile = File(...)):
    return {
        "filename": file.filename,
        "content_type": file.content_type,
    }

学习建议:下一步该怎么做?

恭喜你完成了 FastAPI 的入门学习!但这也只是旅程的开始。下面是我为你整理的学习路线图:

初级阶段

  • ✅ 完成本文项目实践
  • ✅ 练习编写 RESTful 风格的 API
  • ✅ 学会使用 Postman 或 curl 工具测试接口
  • ✅ 学会查看官方文档并解决问题

进阶阶段

  • ✅ 接入数据库(如 SQLite、SQLAlchemy)
  • ✅ 实现用户认证(JWT、OAuth2)
  • ✅ 使用中间件(Middleware)增强功能
  • ✅ 学会部署(Docker、Gunicorn、Nginx)

推荐资源


结语:开始你的后端开发之旅吧!

FastAPI 是一个非常适合 Python 新手进入后端开发世界的起点。它简洁、高效、智能化,而且社区活跃,资料丰富。只要你跟着本文一步一步操作,很快你就能写出自己的接口服务!

记住一句话:“最好的学习方式就是边学边练。”

加油,未来的大神正在诞生!


🎉 附录:完整代码清单

# main.py
from fastapi import FastAPI
from pydantic import BaseModel

class Article(BaseModel):
    title: str
    content: str

app = FastAPI()
articles = []

@app.get("/articles")
def read_articles():
    return articles

@app.post("/articles")
def add_article(article: Article):
    articles.append(article)
    return {"message": "Article added", "data": article}

@app.get("/articles/{article_id}")
def read_article(article_id: int):
    if article_id < len(articles):
        return articles[article_id]
    return {"error": "Article not found"}

@app.delete("/articles/{article_id}")
def delete_article(article_id: int):
    if article_id < len(articles):
        deleted = articles.pop(article_id)
        return {"message": "Article deleted", "deleted": deleted}
    return {"error": "Article not found"}

评论 0

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