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

一人公司实验室
2025-06-25 04:04
阅读 407

开篇:认识FastAPI,它是做什么的?

开篇:认识FastAPI,它是做什么的?

你有没有想过,那些网页和APP背后的数据是怎么来的?比如你在淘宝上查看商品信息,在微信里发送消息,这些数据都是从服务器(也叫“后端”)发送给前端显示的。

FastAPI就是一个帮助我们快速搭建后端服务的工具。它使用Python语言编写,非常简单易懂,适合初学者入门,并且功能强大,适合做现代Web接口(也就是常说的REST API)开发。

它的核心优势有:

  • 🚀 高性能:基于Starlette和Pydantic,速度非常快
  • 🔐 自带文档:访问 /docs 就能自动生成漂亮的接口文档
  • ✨ 支持异步编程:处理大量请求更高效
  • 👶 学习门槛低:Python语法基础就可以上手

如果你是一个完全没写过后端的新手,FastAPI是你最好的第一步!


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

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

在开始写代码之前,我们需要准备好开发环境。不用担心,这一步只需要几分钟时间。

步骤1:安装Python

确保你已经安装了 Python 3.7 及以上版本。可以用命令行检查版本:

python --version

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

步骤2:安装FastAPI

打开命令行工具(Mac用Terminal,Windows用CMD或PowerShell),输入以下命令安装FastAPI及其依赖:

pip install fastapi uvicorn
  • fastapi 是框架本身
  • uvicorn 是一个高性能的ASGI服务器,用来运行我们的应用

步骤3:验证是否安装成功

新建一个文件,比如叫做 main.py,然后写下最简单的FastAPI程序:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "欢迎来到FastAPI的世界!"}

保存之后,在命令行中执行启动命令:

uvicorn main:app --reload
  • main 是文件名
  • app 是我们在代码中创建的 FastAPI 实例
  • --reload 表示在代码修改后自动重启服务器(方便调试)

现在打开浏览器,输入地址:

http://127.0.0.1:8000/

你会看到页面输出:

{
  "message": "欢迎来到FastAPI的世界!"
}

同时还可以访问:

http://127.0.0.1:8000/docs

会自动出现Swagger UI的接口文档,看起来像这样:

  • GET / → 显示欢迎语

🎉 恭喜你,你的第一个FastAPI服务器已经跑起来了!


核心概念:理解FastAPI的关键组件

负载均衡配置-1

核心概念:理解FastAPI的关键组件

学习任何技术都需要掌握几个基本概念,下面我们就来介绍几个你在项目中一定会遇到的核心知识点。

1. 路由(Route)

路由决定了当用户访问某个URL时,应该触发哪个函数。

示例:定义一个获取文章列表的接口

@app.get("/articles")
def list_articles():
    return {"data": ["文章一", "文章二", "文章三"]}

当你访问 /articles,这个函数就会返回对应的列表。

小贴士:你可以把每一个 @app.get("/xxx") 看作是“当有人访问这个路径时,就执行后面的函数”。


2. 请求方法(HTTP Methods)

常见的请求方法包括:

方法 含义
GET 获取资源(比如文章详情)
POST 创建新资源(比如新增一篇文章)
PUT 更新已有资源
DELETE 删除资源

示例:添加一个POST接口

@app.post("/create-article")
def create_article(title: str):
    return {"status": "success", "title": title}

你可以通过浏览器访问 /docs 自动生成的接口测试表单来测试这个POST接口。


3. 参数传递(Path、Query、Body)

参数分为几种常见类型,我们来看例子:

路径参数(Path Parameters)

@app.get("/article/{article_id}")
def get_article(article_id: int):
    return {"id": article_id, "title": f"文章{article_id}"}
  • 访问 /article/5 就会显示 "文章5"

查询参数(Query Parameters)

@app.get("/search")
def search_article(q: str = None):
    return {"query": q}
  • 访问 /search?q=python 会输出 {"query": "python"}

请求体(Request Body)

用于POST等操作中传递复杂数据:

from pydantic import BaseModel

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

@app.post("/submit")
def submit_article(article: ArticleCreate):
    return {"received": article}

4. 数据模型(Data Models)

FastAPI使用 BaseModel 来定义数据结构,方便进行类型验证和文档生成。

示例:

from fastapi import FastAPI
from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

app = FastAPI()

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

当你传入错误的数据类型时(比如年龄传了一个字符串),FastAPI会自动报错并提示你哪里出错了!


实战项目:做一个简单的“文章管理API”

下面我们来实战演练,构建一个可以管理文章的API接口,支持:

  • 查看所有文章
  • 创建新文章
  • 根据ID查看某篇文章

第1步:初始化文件结构

创建一个新文件夹,比如叫做 blog_api,里面放一个 main.py 文件。

第2步:写代码

完整代码如下:

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

app = FastAPI()

# 定义数据模型
class ArticleCreate(BaseModel):
    title: str
    content: str

class Article(ArticleCreate):
    id: int

# 模拟数据库
articles = []

# 接口1:列出所有文章
@app.get("/articles", response_model=List[Article])
def list_articles():
    return articles

# 接口2:创建一篇文章
@app.post("/articles", response_model=Article)
def create_article(article: ArticleCreate):
    new_id = len(articles) + 1
    new_article = Article(id=new_id, **article.model_dump())
    articles.append(new_article)
    return new_article

# 接口3:根据ID查看文章
@app.get("/articles/{article_id}", response_model=Article)
def get_article(article_id: int):
    for article in articles:
        if article.id == article_id:
            return article
    return {"error": "未找到该文章"}

注意:这里为了简化演示,没有真正连接数据库,而是用了内存中的一个列表来模拟数据库。

第3步:运行与测试

同样,运行命令:

uvicorn main:app --reload

打开浏览器进入 /docs,你可以看到三个API接口,分别是:

  • GET /articles → 列出所有文章
  • POST /articles → 提交文章标题与内容,创建新文章
  • GET /articles/{article_id} → 输入ID查看具体文章

试着调用一下吧,看看是否能成功添加并查询文章。


常见问题解答(FAQ)

作为新手,你可能会遇到一些常见的小问题,下面是几个典型的情况和解决办法。


❓ 为什么访问 /docs 页面空白或出错?

  • 确保你使用的是最新版FastAPI和Uvicorn
  • 确保没有拼写错误(注意大小写)
  • 检查Python环境中是否真的安装了FastAPI

❓ 为什么POST接口不接收参数?

  • 确认你使用的请求方法是 POST 而不是 GET
  • 检查是否写了 request body 的模型(即 BaseModel
  • 使用 /docs 中的交互式表单测试是最直接的方式

❓ 如何调试FastAPI应用?

  • 使用 print() 打印变量或中间结果
  • 使用 --reload 参数让代码更改自动生效
  • 在IDE中设置断点调试(推荐VS Code)

❓ FastAPI和Flask有什么区别?

对比项 Flask FastAPI
性能 较慢(WSGI) 更快(ASGI + 异步)
文档 不自带 自带Swagger和ReDoc文档
类型检查 不强制 强制使用Pydantic进行类型验证
学习曲线 简单 同样简单,但更适合现代开发

总的来说:FastAPI更适合新时代API开发,尤其注重效率和自动化文档生成


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

你现在已经有了构建API的基本能力,接下来可以从以下几个方向继续提升:

✅ 推荐进阶学习路线:

  1. 学习使用真实数据库

    • 推荐使用 SQLAlchemyTortoise ORM
    • 尝试连接 SQLite/MySQL/PostgreSQL
  2. 实现用户登录系统

    • 添加认证机制(如JWT)
    • 用户权限管理、token验证
  3. 部署上线

    • 学习Docker打包项目
    • 使用Nginx + Uvicorn部署到云服务器(如阿里云、腾讯云)
  4. 深入异步编程

    • 掌握 async defawait
    • 学会并发请求处理技巧
  5. 前后端联调实践

    • 尝试与React/Vue/Angular等前端框架结合
    • 熟悉跨域请求(CORS)、JSON格式通信等实际问题

结语:继续前行,成为合格的后端开发者!

FastAPI是一个非常适合初学者的现代Web框架,它不仅让你快速上手构建后端API,还能为你打下坚实的编程基础。

记住一句话:

“写代码不要怕错,只要肯动手,每个错误都是进步的机会。”

如果你喜欢这篇文章,可以收藏并尝试跟着一步步实践。有任何疑问,欢迎留言提问,我会尽力帮你解答!

祝你在学习FastAPI的路上越走越远!🚀

评论 0

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