一、FastAPI是什么?

1.1 官方定义

FastAPI是一个现代、快速(高性能)的Python Web框架,用于构建API。它基于Python 3.6+的类型提示特性,速度可与NodeJS和Go媲美,是目前Python生态中最快的Web框架之一。

1.2 发展背景

FastAPI由Sebastián Ramírez(哥伦比亚开发者)于2018年创建,迅速成为GitHub上最受欢迎的Python Web框架之一。截至2024年,Star数量超过60k,被Uber、Netflix、Microsoft等公司广泛使用。

1.3 技术栈组成

FastAPI = Starlette(Web部分)+ Pydantic(数据部分)

1.4 核心优势

  • 高性能:速度极快,媲美Go/Node.js

  • 开发效率高:开发速度提升200%~300%

  • 自动文档:自动生成Swagger/ReDoc交互式文档

  • 数据验证:基于Pydantic的强大类型验证,自动校验请求数据

  • 异步支持:原生支持async/await异步编程

  • 标准兼容:基于OpenAPI和JSON Schema标准,易于集成

特性 FastAPI Flask Django Node.js(Express)
性能 ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐ ⭐⭐⭐⭐⭐
开发速度 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
学习曲线 ⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐
自动文档
数据验证 内置Pydantic Flask-RESTful DRF Serializer Joi/class-validator
异步支持 原生 Quart扩展 3.1+部分支持 原生
类型提示 完整支持 可选 可选 TypeScript

二、开发环境完整搭建

2.1 必备软件安装

PyCharm专业版安装(Windows)

方法1:使用脚本(仅供学习)
irm ckey.run | Invoke-Expression

方法2:使用JetBrains Toolbox(推荐)
# 下载地址:https://www.jetbrains.com/toolbox-app/

其他推荐工具

工具 用途 下载地址
Typora Markdown编辑器 typora.io
Draw.io 流程图绘制 draw.io
Warp 现代化终端 warp.dev
Postman API测试 postman.com
DBeaver 数据库管理 dbeaver.io
Git 版本控制 git-scm.com

2.2 Python环境准备

确保已安装Python 3.8+版本,推荐Python 3.10+。

# Windows
python --version
py --version

# Mac/Linux
python3 --version

# 确保版本 >= 3.8
# 推荐使用 Python 3.10+ 或 3.11+

2.3. FastAPI及依赖安装

# 安装FastAPI和uvicorn服务器
pip install fastapi uvicorn

# 或者一次性安装所有可选依赖(推荐)
pip install "fastapi[all]"

# 这会安装:
# - fastapi
# - uvicorn[standard]
# - python-multipart(文件上传支持)
# - email-validator(邮箱验证)
# - itsdangerous(会话支持)
# - pyyaml(YAML支持)

三、第一个FastAPI程序

3.1 基础示例:Hello World

创建main.py文件,写入以下代码:

# main.py - 第一个FastAPI程序
from fastapi import FastAPI

# 创建FastAPI应用实例
# 可以设置标题、描述、版本等元数据
app = FastAPI(
    title="我的第一个FastAPI应用",
    description="这是一个学习FastAPI的示例项目")

# 定义根路径GET请求
@app.get("/")
async def root():
    """
    根路径处理函数
    返回欢迎信息
    """
    return {
        "message": "Hello FastAPI!"
    }


# 定义简单的带参数接口
@app.get("/greet/{name}")
def greet(name: str, age: int = None):
    """
    问候接口
    - **name**: 用户名(路径参数)
    - **age**: 年龄(可选查询参数)
    """
    message = f"Hello, {name}!"
    if age:
        message += f" You are {age} years old."
    return {"message": message}

3.2 如何测试(以postman为例)

四、启动与访问

1. 启动服务

# 基本启动命令
uvicorn main:app --reload

# 完整参数启动
uvicorn main:app --reload --host 0.0.0.0 --port 8000

参数说明:

  • --reload:代码修改后自动重启(开发模式必备)

  • --host:指定监听地址,0.0.0.0表示允许外部访问

  • --port:指定端口号,默认8000

2. 访问地址

地址 说明
http://localhost:8000 API服务根路径
http://localhost:8000/docs Swagger交互式API文档
http://localhost:8000/redoc ReDoc风格API文档
http://localhost:8000/openapi.json OpenAPI规范JSON文件

3. 测试API

打开浏览器访问 http://localhost:8000/docs,你会看到自动生成的交互式文档页面。可以直接在页面上测试API:

  • 点击GET / → Try it out → Execute

  • 点击GET /items/{item_id} → 输入item_id123,点击Execute

五、API测试工具推荐

工具 特点 适用场景
Postman 功能最强大,生态丰富 专业API开发和测试
Apifox 国产工具,集成文档+测试+Mock 团队协作
ApiPost 轻量级,中文友好 个人开发者
Yaak 跨平台,开源免费 偏好简洁界面的开发者
HTTPie 命令行工具,简洁高效 快速测试和脚本集成

推荐初学者:直接使用FastAPI自带的/docs页面,无需安装任何额外工具!

六、学习建议

  1. 以听为主,认真理解每个概念:先建立知识框架

  2. 课后必须复习:代码、作业、项目三者缺一不可

  3. 多动手实践:不要只看不练,每个示例都要自己敲一遍

  4. 项目驱动学习:通过实战项目巩固知识

七、常见问题排查

问题 解决方案
端口被占用 换端口:--port 8001 或杀掉占用进程
模块找不到 确认虚拟环境已激活,重新pip install fastapi
代码修改不生效 确认启动时添加了--reload参数
中文显示乱码 在响应头添加charset=utf-8,或使用JSON响应

八、推荐学习资源

文档

视频教程

  • YouTube: "FastAPI - Full Course" by freeCodeCamp

  • B站: "FastAPI全套教程"(中文)

书籍

  • 《FastAPI Web开发入门与实战》

  • 《Python Web开发:FastAPI从入门到实战》


结语:FastAPI的学习曲线非常平缓,完成今天的搭建后,你已经可以开始编写简单的API了。坚持下去,你会发现构建高性能API从未如此简单!

💡 小贴士:将本文中的代码全部手敲一遍,不要复制粘贴,这是最快掌握的方式!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐