FastAPI框架基础

一. FastAPI框架概述

FastAPI 是一个专为构建高性能 API 设计的 Python 框架,秉承"高性能、易学习、快速开发、生产就绪"的设计理念。其核心优势在于严格遵循 OpenAPI(原 Swagger)和 JSON Schema 等开放标准。

该框架充分利用 Python 的类型提示功能,实现了三大核心特性

  1. 自动生成交互式 API 文档
  2. 提供智能编辑器支持(含自动补全和类型检查)
  3. 自动完成数据验证与转换

性能方面,FastAPI 表现出色:

  • 运行效率与 Go、NodeJS 等高性能语言的框架相当
  • 位居最快的 Python Web 框架之列
  • 类型驱动的验证机制可提升 200%-300% 的开发效率
  • 能减少约 40% 的开发错误

       FastAPI的性能优势源于其对ASGI(异步服务器网关接口)规范的支持。作为Python异步Web标准,ASGI使框架能够充分利用async/await语法实现异步I/O操作。在Web API场景中,大部分时间都消耗在等待数据库查询或外部API响应这类I/O操作上。借助异步机制,当某个请求因I/O操作挂起时,FastAPI能立即将事件循环切换到处理其他请求,有效避免了CPU资源闲置和请求阻塞。这种非阻塞并发特性正是实现高吞吐和低延迟的核心所在。要精通FastAPI开发,必须深入理解异步编程原理,防止I/O密集型任务意外阻塞主事件循环。

二. FastAPI 三大基石:Starlette, Pydantic, Uvicorn

        FastAPI并非一个独立的巨型框架,而是基于Starlette和Pydantic两大高性能库进行集成封装,并采用Uvicorn作为运行服务器。

Starlette:异步 Web 基础

        Starlette作为FastAPI的底层框架,为其提供了核心的ASGI功能支持。FastAPI直接继承自Starlette,完整保留了其高性能特性,包括原生WebSocket支持、后台任务处理、生命周期事件管理以及基于HTTPX的高效测试客户端。正是Starlette这些底层能力的支撑,确保了FastAPI在高并发环境中的稳定运行。

这种分层设计具有显著的架构优势。基于Starlette的构建方式赋予了开发者更大的灵活性——当遇到特殊或复杂的Web场景时,可以直接调用Starlette的底层功能(如自定义中间件或ASGI协议操作),而不必受限于FastAPI的高层封装。

Pydantic:数据验证与类型转换

        Pydantic是 FastAPI处理数据的核心引擎。它负责根据Python类型提示,实现输入数据的自动验证(Validation)、类型强制转换(Coercion)和序列化(Serialization)。通过定义继承自 pydantic.BaseModel 的类,Pydantic确保了进入应用业务逻辑的数据是有效且符合预期的。

        Pydantic模型作为API数据传输的“合同”(Contract),不仅提升了代码的健壮性,还使得类型提示成为实现自动文档和数据保证的单一来源。Pydantic在后台自动执行数据解析、错误生成(针对无效数据返回清晰的错误信息)和类型转换,极大地简化了开发者处理请求体的复杂性。

Uvicorn:ASGI 服务器

        Uvicorn是用于运行FastAPI应用程序的高性能 ASGI 服务器。在开发过程中,通常使用 fastapi dev main.py 或 uvicorn main:app --reload 命令启动服务。然而,在架构考量上,必须区分开发环境和生产环境的服务器配置。

        在默认配置下,Uvicorn 采用单进程运行模式,这在高并发场景或多核 CPU 环境中会显著制约性能表现。为此,生产环境推荐采用 Gunicorn 作为 WSGI 进程管理器,并配合 Uvicorn Worker 进行部署。这种组合方案中,Gunicorn 负责管理多个 Uvicorn 进程以实现进程级并行计算,从而充分发挥多核 CPU 的性能优势;同时,每个 Uvicorn Worker 则专注于高效处理异步 I/O 请求。

三. 创建第一个FastAPI项目

1. 下载fastapi和unicorn包

pip install fastapi
pip install uvicorn

2. 创建一个实例

代码如下:

"""
FastAPI应用程序的主模块
定义了基本的路由和API端点
"""

from fastapi import FastAPI

# 创建FastAPI应用实例
app = FastAPI()


#表示访问根节点触发的方法
@app.get("/")
async def root():
    return {"message": "Hello World"}

3.Pycharm点击运行

终端输入:uvicorn main:app --reload 出现一下信息表示运行成功

INFO:     Will watch for changes in these directories: ['D:\\application_work\\trae_workspace\\FastA']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [22656] using StatReload
INFO:     Started server process [14788]
INFO:     Waiting for application startup.

更多内容详见我写的新文章:FastAPI的参数

目录

一. FastAPI框架概述

二. FastAPI 三大基石:Starlette, Pydantic, Uvicorn

Starlette:异步 Web 基础

Pydantic:数据验证与类型转换

Uvicorn:ASGI 服务器

三. 创建第一个FastAPI项目

1. 下载fastapi和unicorn包

2. 创建一个实例

3.Pycharm点击运行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值